2012-04-10 253 views
4

組選定的,我有這樣的的Sql通過和字符串連接

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 

在這裏,我需要的resul按ID和總金額和concat字符串名稱相同的ID和不同的名稱

回答

7

這將與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 id, GROUP_CONCAT(DISTINCT name SEPARATOR ' and ') AS name, SUM(amount) AS amount 
FROM mytable 
GROUP BY id 
+0

對不起,但我找不到在sql server中的GROUP_CONCAT ..我想這在sql server 2008 r2 – 2012-04-10 06:54:46

+1

啊,對不起 - 這是MySQL。我沒有閱讀標籤。 – Amadan 2012-04-10 07:14:01

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我的結果。