oracle case...when...条件判断

前言:如果1对应的枚举值存在,则显示枚举名称【划拨】,如果不存在则显示原字段haha。

枚举sql

SELECT enum.enum_name, enum.ENUM_VALUE
FROM bt_field_enum enum,
     bt_field_explain fe
WHERE fe.fld_letter_name = 'jyfs'
  AND enum.fld_exp_id = fe.fld_exp_id;

修改后的sql【case...when】

SELECT case when enum.enum_name is null then 'aaa' else enum.enum_name end enum_name
FROM bt_field_enum enum,
     bt_field_explain fe
WHERE fe.fld_letter_name = 'jyfs'
  AND enum.fld_exp_id = fe.fld_exp_id

值得注意的是:有记录才会转换,如果不存在记录则显示如下

根据上述例子,可以利用left join,讲不符合也显示出来然后利用条件拼接https://blog.csdn.net/qfljg/article/details/4383043

-- 已供应地块SQL
SELECT case when t0.enum_name is null then t0.CK_FS else  t0.enum_name end CK_FS,
       t0.DK_MC,
       t0.ZD_BH,
       CBDK.XZQ_DM                       AS    XZQDM,
       CBDK.XZQ_DM                       AS    XZQ_CODE,
       CBGY.CBGY_GUID,
       CBDK.XZQ_DM,
       (SELECT CBJG.DW_MC
        FROM T_CB_CBJG CBJG
        WHERE CBJG.CBJG_GUID = CBDK.CBJG_GUID) DW_MC,
       GDXM.ZD_BH                              GY_ZD_BH,
       CBGY.GY_MJ,
       to_char(GDXM.QD_RQ, 'yyyy-mm-dd') as    GY_SJ,
       GDXM.DZ_BA_BH,
       GDXM.BH                                 HT_BH,
       GDXM.JE                                 CR_JE
FROM T_CBGY CBGY,
     T_GDXM GDXM,
     T_CB_CBDK CBDK,
     (select * from (SELECT A.XZQ_DM XZQ_MC,
            A.XZQ_DM XZQ_CODE,
            A.ZD_BH,
            A.DK_MC,
            A.CB_GUID,
            A.DZ_BA_BH,
            A.ZD_MJ,
            B.CK_FS,
            B.CK_MJ,
            A.RK_DKBH,
            A.ZD_MJ-NVL(A.YGY_MJ,0)  AS SY_MJ,
            B.XM_ZT  XMZT,
            to_char(B.CREATE_DATE,'yyyy-mm-dd') as CREATE_DATE,
            B.CREATE_USER,B.CREATE_USER as CREATEUSER,
            B.XM_ZT,
            B.CBDK_CK_GUID
        FROM T_CB_CBDK  A,T_CB_CBDK_CK  B WHERE A.CB_GUID=B.CB_GUID
ORDER BY

 B.CREATE_DATE DESC) t1 left join (SELECT enum.enum_name, enum.ENUM_VALUE
FROM bt_field_enum enum,
     bt_field_explain fe
WHERE fe.fld_letter_name = 'jyfs'
  AND enum.fld_exp_id = fe.fld_exp_id) t2 on t1.CK_FS=t2.ENUM_VALUE) t0
WHERE CBGY.GD_GUID = GDXM.GD_GUID
  AND CBGY.CB_GUID = CBDK.CB_GUID
  and t0.CB_GUID = CBDK.CB_GUID;

效果如下

发布了206 篇原创文章 · 获赞 49 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/Sicily_winner/article/details/95642555