您的位置:首页 > 数据库 > Oracle

Oracle CASE WHEN的用法

2015-02-14 12:10 330 查看
CASE WHEN的两种表达形式:
方式一:
CASE
WHEN  D10='成功签收' THEN 1
WHEN  D11='成功签收' THEN 1
ELSE NULL END

WHEN 中间是用判断表达式
方式二:
CASE D10
WHEN '成功签收' THEN 1
WHEN '运输途中' THEN 2
ELSE '其他状态' END

方式一适合对一条记录中的多列进行判断。
方式二适合对一列中的多个条记录进行判断。

CASE WHEN在不同语句位置的用法

SELECT CASE WHEN 用法
SELECT COUNTRY,
COUNT(CASE WHEN D10 = '成功签收' THEN 1 ELSE NULL END) D10,
COUNT(CASE WHEN D11 = '成功签收' THEN 1 ELSE NULL END) D11,
COUNT(CASE WHEN D12 = '成功签收' THEN 1 ELSE NULL END) D12,
COUNT(CASE WHEN D13 = '成功签收' THEN 1 ELSE NULL END) D13,
COUNT(CASE WHEN D14 = '成功签收' THEN 1 ELSE NULL END) D14,
COUNT(CASE WHEN D15 = '成功签收' THEN 1 ELSE NULL END) D15
FROM ......

WHERE CASE WHEN 用法
SELECT * FROMWHERE(CASE
WHEN expr1 = 'search1' AND expr2 IN ('search2', 'search3') THEN
1
WHEN expr3 IN ('search4', 'search5') THEN
2
ELSE
0
END) = 1

GROUP BY CASE WHEN 用法
SELECT CASE
WHEN SALARY <= 500 THEN
'1'
WHEN SALARY > 500 AND SALARY <= 600 THEN
'2'
WHEN SALARY > 600 AND SALARY <= 800 THEN
'3'
WHEN SALARY > 800 AND SALARY <= 1000 THEN
'4'
ELSE NULL END SALARY_CLASS,
COUNT(*)
FROM SALARY GROUP BY CASE
WHEN SALARY <= 500 THEN
'1'
WHEN SALARY > 500 AND SALARY <= 600 THEN
'2'
WHEN SALARY > 600 AND SALARY <= 800 THEN
'3'
WHEN SALARY > 800 AND SALARY <= 1000 THEN
'4'
ELSE NULL END;

参考:/article/5075119.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: