2009-06-25 19 views
0

Ich habe eine MS SQL-Abfrage, die mehrere Tabellen und ein Beispiel für die Ergebnisse Joins sind:SQL Query Distinct Spalte Concatenate Sonstige Spalten

EmailAddress   Column2          
--------------------- ---------------- 
[email protected]   Value1          
[email protected]   Value2 
[email protected]   Value5 


What I really want to achieve are the following results: 


EmailAddress   Column2          
--------------------- ------------------ 
[email protected]   Value1, Value2 
[email protected]   Value5 

Es gibt noch andere Spalten, die für jede Zeile mit der gleichen E-Mail-Adresse identisch sind . Kann jemand mir mit dem SQL helfen, unterschiedliche email Adressen zurückzubringen und die column2 Informationen zu verketten?

Danke für jede Rückmeldung.

Antwort

1

Versuchen Sie, die Antwort auf this question

+0

Diese verwenden den Trick tat, dank Jeremy – Sean

0

In SQL Server 2005+:

WITH q AS 
     (
     SELECT '[email protected]' AS address, 'Value1' AS value 
     UNION ALL 
     SELECT '[email protected]', 'Value2' 
     UNION ALL 
     SELECT '[email protected]', 'Value5' 
     ) 
SELECT (
     SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY value) > 1 THEN ', ' ELSE '' END + value 
     FROM q qi 
     WHERE qi.address = qo.address 
     FOR XML PATH('') 
     ) 
FROM (
     SELECT DISTINCT address 
     FROM q 
     ) qo 
0

gleiche Antwort von Jeremy, aber ich würde die other Antwort mit XML PATH Trick