您的位置:首页 > 数据库

史上最长的SQL+case when用法

2012-11-02 15:49 204 查看
[align=left] [/align]
[align=left][/align]
[align=left]case when[/align]
[align=left]主要实现if-then-else的功能[/align]
[align=left]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[/align]
[align=left]注意点:1、以CASE开头,以END结尾
2、分支中WHEN 后跟条件,THEN为显示结果
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
4、END 后跟别名[/align]
[align=left]高级一点的用法[/align]
[align=left]把case when作为条件 计算。这个我真的没有想到还可以这样,以后看东西要仔细了[/align]
[align=left] [/align]
[align=left]view source [/align]

[align=left]print?[/align]
[align=left]1[/align][align=left]select b.spbs, sum(b.sfsl) S, [/align]
[align=left]2[/align][align=left]sum(case when substr(b.zb_id, 0, 1) = 'T' then b.sfsl else 0 end) 淘宝, [/align]
[align=left] [/align]
[align=left]3[/align][align=left]sum(case when substr(b.zb_id, 0, 1) = 'F' then b.sfsl else 0 end) 分销, [/align]
[align=left]4[/align][align=left]sum(case when substr(b.zb_id, 0, 1) = 'E' OR substr(b.zb_id, 0, 1) = 'Y' then b.sfsl else 0 end) 网站订单数, [/align]
[align=left] [/align]
[align=left]5[/align][align=left]count(case when substr(b.zb_id, 0, 1) = 'E' OR substr(b.zb_id, 0, 1) = 'Y' then b.zb_id end) 网站订单笔 [/align]
[align=left]6[/align][align=left]from gw_dzyddzb a left join gw_dzyddmxb b on a.id = b.zb_id where a.ydrq > sysdate - 1 [/align]
[align=left] [/align]
[align=left]7[/align][align=left] [/align]
[align=left]8[/align][align=left]group by spbs[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息