Sql server 根据项目向上移动并分离对象

Sql server 根据项目向上移动并分离对象,sql-server,tsql,aggregate-functions,Sql Server,Tsql,Aggregate Functions,我有以下问题: Apple | Document 1 | 5 Orange | Document 2 | 4 Apple | Document 3 | 7 我希望查询的结果如下: Apple | Document 1 | Document 3 | 12 Orange | Document 2 | 7 是否有一个函数可以为您做到这一点?如果您使用的是SQL Server 2017之前的版本,您可以尝试使用Stuff和XML Path的组合 SELECT frui

我有以下问题:

Apple  | Document 1 | 5
Orange | Document 2 | 4
Apple  | Document 3 | 7
我希望查询的结果如下:

Apple  | Document 1 | Document 3 | 12
Orange | Document 2              | 7

是否有一个函数可以为您做到这一点?

如果您使用的是SQL Server 2017之前的版本,您可以尝试使用Stuff和XML Path的组合

SELECT fruit, 
    abc = STUFF(
                 (SELECT '|' + doc FROM test t1
                     WHERE t1.fruit = t2.fruit FOR XML PATH ('')), 1, 1, ''
               ), SUM(value)
FROM test t2 GROUP BY fruit
这里很好地解释了内容和XML路径


如果您使用的是SQL Server 2017之前的版本,则可以尝试使用Stuff和XML路径的组合

SELECT fruit, 
    abc = STUFF(
                 (SELECT '|' + doc FROM test t1
                     WHERE t1.fruit = t2.fruit FOR XML PATH ('')), 1, 1, ''
               ), SUM(value)
FROM test t2 GROUP BY fruit
这里很好地解释了内容和XML路径


在SQL Server 2017中,您可以使用STRING_AGG函数和GROUP BY:


在SQL Server 2017中,您可以使用STRING_AGG函数和GROUP BY:


太好了,过几天我会试试的。谢谢有没有一个特定的术语,或者这场运动有没有一个名字可以更好地帮助我的谷歌浏览器?太好了,我会在几天内尝试一下。谢谢是否有一个特定的术语,或者这场运动是否有一个名字能更好地帮助我的谷歌fu?