码迷,mamicode.com
首页 > 数据库 > 详细

学习SQL日记(八)--ORACLE CASE WHEN

时间:2015-01-23 09:24:32      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:

Ⅰ. ORACLE  WHERE 字句里面使用CASE WHEN 25行

Ⅱ.  嵌套使用 CASE WHEN  2~13行

 1 SELECT 
 2        SUM(CASE WHEN M.MV_AVG < 800 AND C.THICKNESS >= 0.5  AND C.THICKNESS <= 0.9  THEN  (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END ) END ) R1CD ,--1区间内长度/炉区速度
 3        SUM(CASE WHEN M.MV_AVG < 800 AND C.THICKNESS > 0.9  AND C.THICKNESS <= 1.3  THEN  (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END) END ) R2CD ,--2区间内长度/炉区速度
 4        SUM(CASE WHEN M.MV_AVG < 800 AND C.THICKNESS > 1.3  AND C.THICKNESS <= 1.6  THEN  (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END) END ) R3CD ,--3区间内长度/炉区速度
 5        SUM(CASE WHEN M.MV_AVG < 800 AND C.THICKNESS > 1.6  THEN  (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END) END ) R4CD ,   --4区间内长度/炉区速度
 6        SUM(CASE WHEN M.MV_AVG >= 800 AND M.MV_AVG < 830 AND C.THICKNESS >= 0.5  AND C.THICKNESS <= 0.9  THEN   (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END) END ) R5CD ,--5区间内长度/炉区速度
 7        SUM(CASE WHEN M.MV_AVG >= 800 AND M.MV_AVG < 830 AND C.THICKNESS > 0.9  AND C.THICKNESS <= 1.3  THEN  (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END) END ) R6CD ,--6区间内长度/炉区速度
 8        SUM(CASE WHEN M.MV_AVG >= 800 AND M.MV_AVG < 830 AND C.THICKNESS > 1.3  AND C.THICKNESS <= 1.6  THEN  (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END) END ) R7CD ,--7区间内长度/炉区速度
 9        SUM(CASE WHEN M.MV_AVG >= 800 AND M.MV_AVG < 830 AND C.THICKNESS > 1.6  THEN (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END) END ) R8CD ,   --8区间内长度/炉区速度
10        SUM(CASE WHEN M.MV_AVG >= 830 AND C.THICKNESS >= 0.5  AND C.THICKNESS <= 0.9  THEN  (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END) END ) R9CD ,--9区间内长度/炉区速度
11        SUM(CASE WHEN M.MV_AVG >= 830 AND C.THICKNESS > 0.9  AND C.THICKNESS <= 1.3  THEN  (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END) END ) R10CD ,--10区间内长度/炉区速度
12        SUM(CASE WHEN M.MV_AVG >= 830 AND C.THICKNESS > 1.3  AND C.THICKNESS <= 1.6  THEN   (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END) END ) R11CD ,--11区间内长度/炉区速度
13        SUM(CASE WHEN M.MV_AVG >= 830 AND C.THICKNESS > 1.6  THEN  (CASE WHEN D.MV_AVG = 0 OR D.MV_AVG IS NULL THEN 0 ELSE P.LENGTH / D.MV_AVG END) END ) R12CD    --12区间内长度/炉区速度
14  FROM PRODCOIL_MV M , (SELECT M.PCOIL_SID , M.MV_AVG   FROM PRODCOIL_MV M  WHERE M.QDR_CHAN = 1  AND  M.PRODUCT_LINE = CGL1) D ,PRODCOILS P ,COILS  C  ,PRODCOILS_SOURCES S  
15 WHERE M.PCOIL_SID = P.PCOIL_SID 
16   AND P.PCOIL_SID = S.PCOIL_SID
17   AND S.COIL_SID = C.COIL_SID 
18   AND M.PCOIL_SID = D.PCOIL_SID
19   AND P.DUMMY_COIL = 0
20   AND M.PRODUCT_LINE = CGL1
21   AND P.PRODUCT_LINE = CGL1
22   AND C.PRODUCT_LINE = CGL1
23   AND S.PRODUCT_LINE = CGL1
24   
25   AND M.QDR_CHAN = (CASE WHEN CGL1 = CGL1 THEN 521 ELSE 531 END )
26   AND P.PROD_DAY  BETWEEN TO_DATE(2014-12-01,YYYY-MM-DD) AND TO_DATE(2014-12-31,YYYY-MM-DD)

 

学习SQL日记(八)--ORACLE CASE WHEN

标签:

原文地址:http://www.cnblogs.com/xxx-xxx/p/4243200.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!