SQL数据透视行到列标题

SQL数据透视行到列标题,sql,impala,Sql,Impala,我需要在(ATR,AWT)中隔离销售\信用\类型\代码,为每个客户\密钥创建4个新列 当前表 期望输出 这是我的代码,但代码不起作用: SELECT customer_key, CASE sales_credit_type_code WHEN 'ATR' THEN dm_name END AS 'ATR DM Name', CASE sales_credit_type_code WHEN 'ATR' THEN salesrep_name END AS 'ATR Salesrep Name'

我需要在(ATR,AWT)中隔离销售\信用\类型\代码,为每个客户\密钥创建4个新列

当前表

期望输出

这是我的代码,但代码不起作用:

SELECT customer_key,

CASE sales_credit_type_code WHEN 'ATR' THEN dm_name END AS 'ATR DM Name',
CASE sales_credit_type_code WHEN 'ATR' THEN salesrep_name END AS 'ATR Salesrep Name',
CASE sales_credit_type_code WHEN 'AWT' THEN dm_name END AS 'AWT DM Name',
CASE sales_credit_type_code WHEN 'AWT' THEN salesrep_name END AS 'AWT Salesrep Name'
FROM aim_customer_zipterr_xref_transposed_vw
group by 1,2,3,4,5

您可以使用聚合函数
group\u concat

select customer_key ,
        group_concat(CASE sales_credit_type_code WHEN 'ATR' THEN dm_name END, ',') AS 'ATR DM Name',
        group_concat(CASE sales_credit_type_code WHEN 'ATR' THEN salesrep_name END,',') AS 'ATR Salesrep Name',
        group_concat(CASE sales_credit_type_code WHEN 'AWT' THEN dm_name END, ',')  AS 'AWT DM Name',
        group_concat(CASE sales_credit_type_code WHEN 'AWT' THEN salesrep_name END, ',')  AS 'AWT Salesrep Name'
FROM aim_customer_zipterr_xref_transposed_vw
group by customer_key
更多信息:

或者,如果每种类型有一个:


select customer_key ,
        max(CASE sales_credit_type_code WHEN 'ATR' THEN dm_name END) AS 'ATR DM Name',
        max(CASE sales_credit_type_code WHEN 'ATR' THEN salesrep_name END,',') AS 'ATR Salesrep Name',
        max(CASE sales_credit_type_code WHEN 'AWT' THEN dm_name END)  AS 'AWT DM Name',
        max(CASE sales_credit_type_code WHEN 'AWT' THEN salesrep_name END)  AS 'AWT Salesrep Name'
FROM aim_customer_zipterr_xref_transposed_vw
group by customer_key

谢谢你,@eshirvana。结果在select语句中的其他维度上重复。有没有办法使小组讨论的结果与众不同?我试过:组(当'ATR'然后dm'名称结束时的不同案例销售信用类型代码,',')作为'Acute RSM',组(当'ATR'然后salesrep'名称结束时的不同案例销售信用类型代码,',')作为'Acute Rep',组(当'AWT'然后dm'名称结束时的不同案例销售信用类型代码,','))作为'OOH RSM',组(组)(当'AWT'然后salesrep_name END',',','时的不同案例sales_credit_type_code,')作为'OOH Rep',@ChaseMekaelian,如果你的意思是你得到了重复的行,那么根据提供的样本数据,你不应该,除非有更多的故事;),可能提供更好的样本数据也尝试了max函数,它不会使用字符串