赞
踩
样本数据
name | age |
张三 | 10 |
李四 | 10 |
王五 | 10 |
把10岁的名字转换到一行中
age | name的集合 |
10 | 张三,李四,王五 |
Oracle中listagg() WITHIN GROUP () 将多行合并成一行
- SELECT
- T.AGE
- LISTAGG (T.NAME, ',') WITHIN GROUP (ORDER BY T.NAME) NAME
- FROM
- STUDENT T
- WHERE
- T.AGE= '10'
- GROUP BY
- T.AGE
Mysql中
- SELECT
- T.AGE
- group_concat ( T.NAME ORDER BY AGE separator ',' )
- FROM
- STUDENT T
- WHERE
- T.AGE= '10'
- GROUP BY
- T.AGE
hive中
- SELECT
- id,CONCAT_WS(",",COLLECT_SET(T1.NAME))
- FROM wails t1
- GROUP BY t1.id
COLLECT_SET:函数只接受基本数据类型,它的主要作用是将某字段的值进行去重 汇总,产生 Array 类型字段
- age name
- 1 ["hah"]
- 2 ["hah"]
- 10 ["张三","李四","王五"]
CONCAT_WS(separator, str1, str2,...):分隔符将被加到被连接 的字符串之间
- age name
- 1 hah
- 2 hah
- 10 张三,李四,王五
CONCAT(string A, string B):返回输入字符串连接后的结果,支持任意个输入字 符串;
CONCAT_WS(",",collect_list(cast(customer_id as string)))
sqlserver行转列使用逗号拼接
详见我的另一篇博文stuff函数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。