Sql select group by and string concat
本问题已经有最佳答案,请猛点这里访问。
我有一张这样的桌子
1 2 3 4 5 6 7 8 | ID NAME Amount 1 cal 100 2 cal 200 3 cal 300 4 cal 400 1 ser 500 2 ser 600 5 ser 700 |
我想写一个选择查询,这样我就能得到这样的结果
1 2 3 4 5 6 | ID NAME Amount 1 cal AND ser 600 2 cal AND ser 800 3 cal 300 4 cal 400 5 ser 700 |
这里我需要按id和amount之和分组,并使用相同id和不同name的字符串名称进行concat。
这将与SQL Server 2008一起使用
1 2 3 4 5 6 7 8 9 | SELECT p1.ID, ( SELECT NAME + ' and ' FROM YourTable p2 WHERE p2.ID = p1.ID ORDER BY NAME FOR XML PATH('') ) AS Name, SUM(Amount) FROM YourTable p1 GROUP BY ID ; |
1 2 3 4 5 6 7 8 9 10 | SELECT p1.ID, STUFF(( SELECT ' and ' + NAME FROM YourTable p2 WHERE p2.ID = p1.ID ORDER BY NAME FOR XML PATH('') ) , 1, 5, '' ) AS Name, SUM(Amount) FROM YourTable p1 GROUP BY ID |
来自vikram答案我为我的结果添加了一些东西。