2014-06-13 104 views
2

是否有任何方法通過對一列中的字段進行分組來組合/連接字段? 如:使用GROUP BY的Concat單列字段

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 

是否有任何蜂巢函數來做到這一點?

回答

4

假設你有一個表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

你可以使用CONCAT_WS()和collect_list()來實現這個....

喜歡的東西

select id , concat_ws(",", collect_list(val)) from test group by id; 

「」 是在上面的查詢的分隔符。