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
相关推荐
Elastic 中国社区官方博客2 小时前
将你自己的密钥用于现有 Elastic Cloud 部署
大数据·数据库·elasticsearch·全文检索
红海云3 小时前
Jev:给智能系统做判断的模型
大数据·数据库·人工智能
wjkjpcba3 小时前
PCBA烧录程序是什么:PCBA包工包料厂家解析烧录与测试
linux·数据库·人工智能·smt贴片加工·pcba贴片加工厂
꯭自꯭闭꯭3 小时前
达梦事物特性及MVCC
linux·运维·数据库
小马同学-4 小时前
MySQL主从复制和读写分离
数据库·mysql
谢亮_vipxieliang4 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
geovindu4 小时前
sql: JSON and XML Data Handling in SQL using sql server 2025
大数据·数据库·sqlserver·数据库开发·数据库架构
IT大白鼠5 小时前
图数据库系列 · 第 02 篇——架构拆解:原生图存储到因果集群
数据库·架构·nosql
EatFan5 小时前
从“框架混战“到“运行时收敛“:2026 年 AI Agent 开发框架的三条路线之争
java·数据库·人工智能·多智能体·ai agent·mcp·agent 框架
小蒜学长6 小时前
基于SpringBoot的佳新超市管理系统设计与实现系统(代码+数据库+LW)
java·数据库·spring boot·后端·佳新超市管理系统