select case when ... then ... when ... then ... ... else null end from
报什么错 else case when .... then 这个里面的case结束时是否加了end
else 后面不用在加case了.语法是: select case when ... then ... ... else null end from t
SELECT col1, col2, CASE WHEN col3 > 1 AND col3 <2 THEN '1' WHEN col3 > 2 AND col3 <3 THEN '2' WHEN col3 > 3 AND col3 <4 THEN '3' ELSE '4' END mylevel FROM table1 注意点: 1、以CASE开头,以END结尾 2、分支中WHEN 后跟条件,THEN为显示结果 3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加 4、END 后跟别名
--EX SELECT AVG(CASE WHEN e.salary > 2000 THEN e.salary WHEN 3000 > e.salary THEN e.salary + 100 ELSE 2000 END) "Average Salary" from employees e;
SELECT CASE 1 WHEN 1 THEN 2 WHEN 2 THEN 3 END CASE FROM DUAL; 看看这个。
when ... then ...
when ... then ...
...
else
null
end
from
else case when .... then
这个里面的case结束时是否加了end
else 后面不用在加case了.语法是:
select case
when ... then ...
...
else
null
end
from t
CASE
WHEN col3 > 1 AND col3 <2
THEN '1'
WHEN col3 > 2 AND col3 <3
THEN '2'
WHEN col3 > 3 AND col3 <4
THEN '3'
ELSE '4'
END mylevel
FROM table1 注意点:
1、以CASE开头,以END结尾
2、分支中WHEN 后跟条件,THEN为显示结果
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
4、END 后跟别名
--EX
SELECT AVG(CASE
WHEN e.salary > 2000 THEN
e.salary
WHEN 3000 > e.salary THEN
e.salary + 100
ELSE
2000
END) "Average Salary"
from employees e;
WHEN 1 THEN
2
WHEN 2 THEN
3
END CASE
FROM DUAL;
看看这个。