在oracle里面写case语句

    技术2022-05-11  52

    例子:

    在一个表(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       04    100000       1000005    0                   100000

    另外:

    1. caseSELECT 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,'修改','删除') OperationNameFROM 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


    最新回复(0)