【问题标题】:Sql select group by and string concat [duplicate]Sql select group by和字符串连接[重复]
【发布时间】:2012-04-22 10:52:51
【问题描述】:

我有一张这样的桌子

ID  NAME    Amount
1   cal     100
2   cal     200
3   cal     300
4   cal     400
1   ser     500
2   ser     600
5   ser     700

我想写一个选择查询,这样我就能得到这样的结果

ID  NAME            Amount
1   cal and ser     600
2   cal and ser     800
3   cal             300
4   cal             400
5   ser             700

这里我需要按 id 和金额的总和进行分组,并连接具有相同 id 和不同名称的字符串名称

【问题讨论】:

    标签: sql sql-server sql-server-2008 tsql


    【解决方案1】:

    这将适用于 sql-server 2008

    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 ;
    

    【讨论】:

      【解决方案2】:
      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  
      

      来自维克拉姆的回答
      我为我的结果添加了stuff

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-21
        • 1970-01-01
        • 1970-01-01
        • 2011-02-07
        • 1970-01-01
        相关资源
        最近更新 更多