在oracle里面写case语句

例子:

在一个表(TABLENAME)中由于一个字段(FLAG)的取值不同, 对另一个字段(VALUE)分别作多次sum.

SELECT  ID, NVL(SUM(
                 CASE
                 WHEN  FLAG  IS  NULL
                THEN VALUE
                END ), 0) VALUE_A, nvl(SUM(
               CASE
                WHEN   FLAG  IS  NOT NULL
               THEN  VALUE
                END ), 0) VALUE_B

               FROM TABLENAME
               GROUP BY  ID

结果如下:

ID  VALUE_A   VALUE_B

1    100010       0
4    100000       100000
5    0                   100000

另外:

1. case
SELECT LogID,UserID,LogTime,Url,Description,(
case
when OperateType = 0
then '新增'
when OperateType=1
then '修改'
else '删除'
end ) FROM LOG

2.DECODE的写法:
SELECT LogID,UserID,LogTime,Url,Description,
decode(OperateType,0,'新增',1,'修改','删除') OperationName
FROM LOG

语句嵌套:

SELECT  A.trhcd ,B.kon_sei_gaku
FROM KKYM010 A JOIN BSHT100 B ON A.trhcd = B.trhcd1

AND B.SEI_SM_YMD =
(SELECT MAX(SEI_SM_YMD)
FROM BSHT100  
WHERE BSHT100.SEI_SM_YMD <  (
     CASE WHEN A.sei_sm_dd IS NULL THEN TO_CHAR(TO_NUMBER(BSHT100.SEI_SM_YMD)+1)
     WHEN  A.sei_sm_dd IS NOT NULL THEN (DECODE(A.sei_sm_dd, 99, '20061201', '20051220'))
     END)
AND BSHT100.TRHCD1 = A.TRHCD )
 WHERE  A.tkskbn IS NOT NULL  AND A.uri_kj_flg = 1 ORDER BY A.trhcd


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值