sql—在配置单元中,将两行与

wwwo4jvm  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(264)

在Hive里我正在努力实现以下目标。
输入:

Col1  Col2  Col3  Col4  Col5
 A1    B1     C1    D1   E1
 A1    B1     C2    D1   E1
 A3    B3     C3    D3   E3
 A4    B4     C4    D4   E4

输出:

Col1  Col2  Col3  Col4  Col5
 A1    B1    C1,C2  D1   E1
 A3    B3     C3    D3   E3
 A4    B4     C4    D4   E4

行1和行2是相似的,除了输入中的col3。在输出中,应该用 , 而不是两排。

sbdsn5lh

sbdsn5lh1#

collect_set 做你想做的事。下面的查询应该做:

select col1, col2, col4, col5, concat_ws(",", collect_set(col3))  from <table> group by col1, col2, col4, col5;
``` `collect_set` 删除重复项将为您提供一个唯一的列表。如果在col3中有重复项,并且希望保留这些项,则可以使用collect\u list。如果你的col3有c1,c1,c2;使用集合给出“c1,c2”。使用collect\u list得到“c1,c1,c2”
编辑:concat\u ws将输出转换为所需的格式。

相关问题