Teradata - 根据值填充列

Teradata - Populating columns based on values

我正在尝试根据行值填充 table。

来源

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,ONL 的值。所以我正在填充 0。你能帮助我如何在 Teradata 14 中实现这一点吗?

如果已知规则数量,您可以使用 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/rule 可能有多行,您可以切换到 SUM 而不是 MAX