<?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

注意点:
1、以CASE开头,以END结尾
2
、分支中WHEN 后跟条件,THEN为显示结果
3
ELSE 为除此之外的默认情况,类似于高级语言程序中switch casedefault,可以不加
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