2012-04-10 23 views
4

Ich habe eine Tabelle wie dieseSQL-Select-Gruppe durch und String concat

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

i eine Auswahlabfrage schreiben wollen, so dass ich die Resul wie diese

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

hier muss ich Gruppe von id und der Summe der Menge und concat den String-Namen mit gleicher ID und differnet Namen

Antwort

7

dies mit sQL-Server arbeitet 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

Sorry, aber ich konnte GROUP_CONCAT in SQL Server nicht finden .. Ich möchte dies in SQL Server 2008 r2 –

+1

Ah, tut mir leid - das ist MySQL. Ich habe die Tags nicht gelesen. – Amadan

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 

Von Vikram Antwort
ich hinzufügen stuff für mein Ergebnis.