前言:如果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;
效果如下