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
相关推荐
weixin_460443563 小时前
考试监控大屏为什么不能直接查数据库?WebSocket、Redis与实时数据聚合架构设计
数据库·redis·在线考试系统·培训考试系统·煤矿培训考试系统·煤矿在线考试系统·宏远培训考试系统
风哥2号3 小时前
数据库教程FGMT02‑生产环境Linux+Oracle19c安装配置与项目实战
linux·数据库·ffmpeg
九皇叔叔7 小时前
【第二章】Redis基础入门:Redis是什么、为什么快以及核心特性详解
数据库·redis·缓存
云和恩墨7 小时前
删库不跑路,回滚极速触达——zData S“旁路日志”持续保护原理深剖
数据库
MetaLite8 小时前
SpringBoot接口分层规范-外网网关内部服务与参数边界
java·数据库·spring boot
Wang's Blog10 小时前
Java框架快速入门: Spring Security+OAuth2之元注解简化权限表达式
java·数据库·spring
天空之城--11 小时前
Android逆向安全合规接单指南
android·安全
蓝速科技12 小时前
医院导诊 AI 数字人一体机场景适配与落地指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理·技术分享
QYR-分析12 小时前
重轨受电弓行业深度报告:市场格局、技术迭代与发展前景
大数据·数据库·人工智能
消失的旧时光-194312 小时前
Android 系统层扫盲 09:AMS、ATMS、WMS、PMS 到底分别管什么?
android·wms·pms·ams·aosp·atms