mysql listagg within_SQLSERVER中的ListAGG

MySQLSELECT FieldA     , GROUP_CONCAT(FieldB ORDER BY FieldB SEPARATOR ',') AS FieldBs  FROM TableName GROUP BY FieldA ORDER BY FieldA;

Oracle&DB2SELECT FieldA     , LISTAGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs  FROM TableName GROUP BY FieldA ORDER BY FieldA;

PostgreSQLSELECT FieldA     , STRING_AGG(FieldB, ',' ORDER BY FieldB) AS FieldBs  FROM TableName GROUP BY FieldA ORDER BY FieldA;

SQLServer

SQLServer≥2017&Azure SQLSELECT FieldA     , STRING_AGG(FieldB, ',') WITHIN GROUP (ORDER BY FieldB) AS FieldBs  FROM TableName GROUP BY FieldA ORDER BY FieldA;

SQLServer≤2016(包括cte以鼓励干原理)WITH CTE_TableName AS (

SELECT FieldA, FieldB         FROM TableName)SELECT t0.FieldA     , STUFF((

SELECT ',' + t1.FieldB         FROM CTE_TableName t1        WHERE t1.FieldA = t0.FieldA

ORDER BY t1.FieldB          FOR XML PATH('')), 1, LEN(','), '')

AS FieldBs  FROM CTE_TableName t0 GROUP BY t0.FieldA ORDER BY FieldA;

SQLite

排序需要CTE或子查询WITH CTE_TableName AS (

SELECT FieldA, FieldB         FROM TableName        ORDER BY FieldA, FieldB)SELECT FieldA

, GROUP_CONCAT(FieldB, ',') AS FieldBs  FROM CTE_TableName GROUP BY FieldA ORDER BY FieldA;

不订货SELECT FieldA     , GROUP_CONCAT(FieldB, ',') AS FieldBs  FROM TableName GROUP BY FieldA ORDER BY FieldA;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值