SQL常见函数整理 _ STRING_AGG()

  • 用法

    STRING_AGG() 是一个聚合函数,用于提取行中的所有表达式,并将这些表达式串联成一个字符串。 表达式值隐式转换为字符串类型,然后串联在一起。

  • 语法

sql 复制代码
STRING_AGG ( expression , separator ) [ <order_clause> ]

<order_clause> ::=
    WITHIN GROUP ( ORDER BY <order_by_expression_list> [ ASC | DESC ] )   
  • 应用示例
sql 复制代码
if object_id('ProdList','u')  is not null drop table ProdList
go 
create table ProdList (
 商品名称   varchar(20)
,订单实收   decimal(19,6)
)
go 
insert into  ProdList 
values 
 ('烧烤',99)
,('烧烤',109)
,('火锅',89)
,('火锅',119)
,('冰淇淋',9.9)
go 
--Output 
select  商品名称,STRING_AGG(CONVERT(nVARCHaR(max),订单实收),',')   
within group  (order by 订单实收  asc)  as  CSV
from ProdList
group by 商品名称;
  • 注意事项
    适用于:SQL Server 2017 (14.x) 及以后版本
    忽略 Null 值,并且不会添加相应的分隔符。
sql 复制代码
if object_id('CourseSchedule ','u') is not null drop table Sales
go
create table CourseSchedule (
  Name       varchar(10)
, Course      varchar(10)
)
go
insert into CourseSchedule 
values
 ( 'Janne','语文')
,( 'Janne',null)
,( 'Mary' ,'数学')
,( 'Mary' ,'英语')
,( 'Jacky' ,null)
,( 'Grace' ,'化学' )
go
--Output
SELECT name,STRING_AGG(CONVERT (NVARCHAR (MAX),Course ),',') AS csv
FROM CourseSchedule
group  by  name
GO
相关推荐
环流_1 小时前
Redis过期策略
数据库·redis·缓存
北秋,1 小时前
Web Security Academy 第四关:SQL 注入查询 MySQL / SQL Server 版本
数据库·sql·mysql
2401_824697661 小时前
如何实现SQL存储过程状态监控_编写实时运行监控仪表盘
jvm·数据库·python
Mike117.1 小时前
GBase 8c MOT 内存表落地前要先画清楚边界
服务器·数据库
iAm_Ike1 小时前
c++怎么在写入文件流时通过peek预读功能实现复杂的逻辑判断【实战】
jvm·数据库·python
未若君雅裁1 小时前
MySQL慢SQL排查实战-从定位到EXPLAIN优化闭环
sql·mysql
dFObBIMmai1 小时前
mysql如何确保主从数据完全同步_开启半同步复制机制
jvm·数据库·python
2501_930707781 小时前
使用C#代码压平 PDF 表单字段
数据库·pdf·c#
m0_470857642 小时前
CSS如何实现Bootstrap进度条自定义动画_利用keyframe关键帧
jvm·数据库·python