<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
case when
主要实现if-then-else的功能
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
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 后跟别名
1、以CASE开头,以END结尾
2、分支中WHEN 后跟条件,THEN为显示结果
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
4、END 后跟别名
高级一点的用法
把case when作为条件 计算。这个我真的没有想到还可以这样,以后看东西要仔细了
1
|
select b.spbs, sum(b.sfsl) S,
|
2
|
sum(case
when substr(b.zb_id, 0, 1) = 'T'
then b.sfsl else
0 end)
淘宝,
|
3
|
sum(case
when substr(b.zb_id, 0, 1) = 'F'
then b.sfsl else
0 end)
分销,
|
4
|
sum(case
when substr(b.zb_id, 0, 1) = 'E'
OR substr(b.zb_id, 0, 1) = 'Y'
then b.sfsl else
0 end)
网站订单数,
|
5
|
count(case
when substr(b.zb_id, 0, 1) = 'E'
OR substr(b.zb_id, 0, 1) = 'Y'
then b.zb_id end)
网站订单笔
|
6
|
from gw_dzyddzb a left join gw_dzyddmxb b on a.id = b.zb_id where a.ydrq > sysdate - 1
|
7
|
|
8
|
group by spbs
|
转载于:https://blog.51cto.com/19880614/1048326