SQLServer2017新增:string_agg函数(分组合并字符串),可以轻松实现分组合并字符串,⽽不是⽤xml path,或者写个⾃定义 函数来实现。
语法:
STRING_AGG ( expression, separator ) [ <order_clause> ]
<order_clause> ::=
WITHIN GROUP ( ORDER BY <order_by_expression_list> [ ASC | DESC ] )
有2个参数,第1个是要合并的字段、表达式,第2个是⽤什么分隔符,⽐如:⽤逗号作为分隔符。
后⾯的order ⼦句,是对要合并的数据进⾏排序,可以升序、降序。
⼀、建表
create table t
(
name varchar(10),
v varchar(20)
)
insert into t
select 'a','100' union all
select 'a','20' union all
select 'b','3' union all
select 'b','2' union all
sql中union多表合并select 'c','5'
⼆、合并字符串
代码如下,是不是很简单,so easy 。
select name,
string_agg(v,',') as vv
from t
group by name
/*
name vv
a 100,20
b 3,2
c 5
*/
三、⽤order by⼦句,对要合并的字符串进⾏排序
上⾯例⼦中,name为a的,把v列合并成 100,20,如果要合并成20,100呢,如何实现?
select name,
string_agg(v,',') within group(order by cast(v as int)) as vv from t
group by name
/*
name vv
a 20,100
b 2,3
c 5
*/
怎么样,是不是很简单。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论