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
相关推荐
呆呆小孩4 分钟前
零基础学 MySQL(上):从建库建表到增删改查,一篇搭好 SQL 基础
android·sql·mysql
ltl7 分钟前
WiredTiger History Store:文档库里的第三种 MVCC
数据库
码农阿豪8 分钟前
若依启动突然报 Redis MISCONF?一次从应用报错到磁盘爆满的完整排查记录
数据库·redis·bootstrap
catchadmin14 分钟前
NativePHP v4 让 Blade 构建原生 iOS 与 Android 界面
android·ios·ai·php
ltl17 分钟前
SQLite 查询计划器:没有 ANALYZE 时靠什么猜
数据库
ltl25 分钟前
Redis maxmemory 策略:近似 LRU/LFU 与 MEMORY DOCTOR
数据库
leisoo809735 分钟前
ig50数据落盘ClickHousevsTimescaleDBvsDuckDB实测对比 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·json
倔强的石头1061 小时前
数据库迁移工具从单机作业走向云端协同
数据库
FfHUCisI2 小时前
Golang 数据库连接池深度调优
android·数据库·golang
我不会插花弄玉2 小时前
2.库的操作【由浅入深-MySQL】
数据库·mysql