目录
一、具体要求
在ODPS中,多行合并为一行可以通过使用ODPS SQL语句中的聚合函数来实现。
假设我们有一个表格,其中包含多行数据:
name | score |
---|---|
Tom | 20 |
Jack | 20 |
Lucy | 30 |
将上述表格中的相同分数的人合并为一行,并用逗号分隔每个值;
二、实现(WM_CONCAT、CONCAT_WS)
1、WM_CONCAT 实现
SELECT
score
,WM_CONCAT(',', name) AS merged_data
FROM table_name
group by score
;
WM_CONCAT(separator,string) ,以separator作为分隔符,合并name字段
2、CONCAT_WS 实现
SELECT
score
,CONCAT_WS(',', collect_set(name)) AS merged_data
FROM table_name
group by score
;
在这个例子中,CONCAT_WS函数用于将name合并为一个字符串,并用逗号分隔每个值。
三、执行结果
执行以上SQL语句后,将得到以下结果:
score | merged_data |
---|---|
20 | Tom,Jack |
30 | Lucy |
这个结果表示将原始表格中的所有数据合并为一行,并用逗号分隔每个值。