有没有办法通过对一列中的字段进行分组来组合/连接它们。 例如:
col1 col2
1 aa
1 bb
1 cc
2 dd
2 ee
我想查询类似的内容:
select col1, concat(col2) from tableName group by col1;
输出应为:
1 aa,bb,cc
2 dd,ee
配置单元中是否有任何功能可以执行此操作?
答案 0 :(得分:5)
假设您有一个表test
,如下所示:
select id, val from test order by id, val;
2 aa
2 bb
1 bb
1 aa
您可以使用HIVE
函数collect_set
:
select id, collect_set(val) from test group by id;
1 ["aa","bb"]
2 ["bb","aa"]
但请注意collect_set
会返回一组具有重复元素的对象。
您可以在Language Manual Wiki找到更多详情。
答案 1 :(得分:0)
您可以使用group_concat()实现此目的:
select col1,group_concat(col2) from test group by col1;
默认的分隔符为',',您可以像这样指定分隔符:
select col1,group_concat(col2 separator ';') from test group by col1;