CASE ...WHEN...函数

case   when..[字段A]=1

        then..[输出值1]

        else..[输出值2]

end 

意思是:当字段A=1时输出值1 ,否则输出值2,结束

CASE..WHEN函数还能一直扩展,例如

    SELECT    
   CASE
         WHEN L.item_desc in ( '石墨纸F03510THP30-SGL','石墨纸 0.35mm  20ppm') THEN
          '0.35mm'
         WHEN L.ITEM_DESC in( '石墨纸 F02510THP30-SGL','石墨纸0.25*500*500mm','石墨纸0.25*500*600-MES') THEN
          '0.25mm'
         ELSE
          null
       END HDD,l.item_desc,L.ITEM_TYPE_DESC2  FROM  ITEM_MASTER L 

输出结果:

 

可以同时写好几个when来判断,和decode()函数有相似之处.

和DECODE()搭配

这两个函数也可以搭配使用,例如:

     SELECT   
       CASE 
         WHEN L.ITEM_TYPE_DESC2 IN('坩埚','保密坩埚') THEN
           L.ITEM_TYPE_DESC2
         WHEN L.ITEM_TYPE_DESC ='石墨纸' THEN
           DECODE(L.ITEM_DESC,'石墨纸F03510THP30-SGL','0.35MM',
           '石墨纸 F02510THP30-SGL','0.25MM','其他')
         END hdd
         from item_master l

输出结果如图:

 该段代码的意思是,

当 item_type_desc字段的值为坩埚和保密坩埚时,

原样输出,

当item_type_desc字段的值为石墨纸时,

将输出的字段item_desc再进行判断,当item_desc的值为‘石墨纸F03510THP30-SGL’输出0.35,值为‘石墨纸 F02510THP30-SGL’输出0.25,

最后结束,将输出的列,重命名为hdd

和floor(),mod(),round()函数搭配

和时间函数搭配使用,用来计算时间,例如:

  SELECT
  CASE
         WHEN T.CRYSTAL_PRO_DATE IS NULL THEN
          NULL
         WHEN T.PLAN_CRYSTAL_PRO_DATE IS NULL THEN
          NULL
         ELSE
          FLOOR(ROUND((T.CRYSTAL_PRO_DATE - T.PLAN_CRYSTAL_PRO_DATE) * 24) / 24) || '天' ||
          ROUND(MOD((T.CRYSTAL_PRO_DATE - T.PLAN_CRYSTAL_PRO_DATE) * 24, 24),1) || '小时'
       END DATE_DIFF_3 FROM INVENTORY_CLEAN_WAFER_MASTER T

输出结果:

该段代码在计算时间时先对时间列进行不为空的判断,在进行计算。 

CASE..WHEN函数很简单也是常用的函数,写代码时也可以将该函数与其他函数搭配,代码运行效率会高很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值