对于DBT_C_MT_MSG_DET,我们从以下简单的结果开始
PROD_REF_ID SUB_FLD TAG_NO TAG_VAL_1
GF41800427 1 32A 24-Oct-2018
GF41800427 2 32A SGD
GF41800427 3 32A 7829.43
通过将其与其他表和条件以及所有条件结合起来,我需要基于SUB_FLD值将TAG_VAL_1依次放置以用于特定的PROD_REF_ID。
所需结果:
PROD_REF_ID TAG_NO Date Currency Amount
GF41800427 32A 24-Oct-2018 SGD 7829.43
我尝试使用下面的方法作为select的一部分,但随后我获得了3条记录,另外两条为null:
case when sub_fld = 1 then tag_val_1 end as tag32A_Date,
case when sub_fld = 2 then tag_val_1 end as tag32A_Curr,
case when sub_fld = 3 then tag_val_1 end as tag32A_Amt,
意外结果:
TAG32A_DATE TAG32A_CURR TAG32A_AMT PROD_REF_ID
24-Oct-2018 GF41800427
SGD GF41800427
7829.43 GF41800427
建议。
答案 0 :(得分:1)
您需要使用诸如max()或min()之类的聚合函数
select PROD_REF_ID,
max(case when sub_fld = 1 then tag_val_1 end) as tag32A_Date,
max(case when sub_fld = 2 then tag_val_1 end) as tag32A_Curr,
max(case when sub_fld = 3 then tag_val_1 end) as tag32A_Amt
from tablename
group by PROD_REF_ID