我希望根据以下方案申请制作一个标志。我所追求的源表和所需结果如下表所示。
当SRCE_SYST_FLAG
不为空(以及= Y
)时,请使用DERIVED_FLAG
列中的值创建新标记(SRCE_SYST_FLAG
),否则使用{ {1}}列。
但是,如果同一GENERIC_FLAG
组中的其他记录填充了TRAN_ID
列,请将SRCE_SYST_FLAG
设置为另一个DERIVED_FLAG
。这是SRCE_SYST_F
下面的情况。
有人会知道如何使用案例陈述吗?我可以创建一个通用的,例如下面的那个,但是这不会使用TRAN_ID = 2222
作为NULL的记录,但是SRCE_SYST_FLAG
填充了该tran_id组中的另一个记录:
SRCE_SYST_FLAG
样本数据集:
CASE
WHEN SRCE_SYST_Flag = 'Y'
THEN SRCE_SYST_FLAG
ELSE GENERIC_FLAG
END AS 'DERIVED_FLAG'
期望的结果:
Client | Limit | Pdct_type_c | SRCE_SYST_FLAG | GENERIC_FLAG | TRAN_ID
--------------------------------------------------------------------------------
John | 4,000,000.00 | DCO | y | N | 2222
John | | DCO | NULL | N | 2222
Mark | 2,000,000.00 | DCO | NULL | N | 435
Mark | | DCO | NULL | N | 435
Luke | 4,000,000.00 | DCO | N | Y | 980
我感谢任何帮助,
干杯
答案 0 :(得分:1)
使用SUM OVER
计算每个tran_id的“Y”数:
select client
, limit
, Pdct_type_c
, TRAN_ID
, case when SUM(case when SRCE_SYST_FLAG = 'Y' then 1 else 0 end) OVER (partition by tran_id) > 0 then 'Y' else GENERIC_FLAG end DERIVED_FLAG
from table