关于sql server:sql选择group by和string concat

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答案我为我的结果添加了一些东西。