我正在尝试根据行值填充表。
来源
Cust_num Rule Amt Cnt
1 CHQ 40 2
1 ONL 20 4
2 CHQ 11 1
目标
Cust_Num CHQ_AMT CHQ_CNT ONL_AMT ONL_CNT
1 40 2 20 4
2 11 1 0 0
假设第一个客户编号为1,它符合两个规则。所以我为这些人填充价值。对于cust num 2,on ONL的值。所以我填充0。你能帮我解决如何在Teradata 14中实现这一目标。
答案 0 :(得分:2)
如果已知规则数量,您可以使用MAX / CASE:
select Cust_num
,max(case when Rule = 'CHQ' then Amt else 0 end) as CHQ_AMT
,max(case when Rule = 'CHQ' then Cnt else 0 end) as CHQ_CNT
,max(case when Rule = 'ONL' then Amt else 0 end) as ONL_AMT
,max(case when Rule = 'ONL' then Cnt else 0 end) as ONL_CNT
from tab
group by 1
如果每个cust_num /规则可能有多行,您可以切换到SUM
而不是MAX
。