2012-06-08 4 views
1

Voici ma situation:Comment fusionner des données de plusieurs lignes dans SQL Server

PERSONNES TABLE (code, nom, + d'autres domaines qui sont identiques pour les enregistrements avec le même code)

1;John Wayne 
2;Jack Smith 
2;Jill Smith 
3;Bill Peyton 
3;Gill Peyton 
3;Billy Peyton 

Le résultat que je voudrais:

PEOPLE VIEW (code, nom, + d'autres domaines qui sont identiques pour les enregistrements avec le même code)

1;John Wayne 
2;Jack Smith Jill Smith 
3;Bill Peyton Jill Peyton Billy Peyton 

Quelqu'un peut-il s'il vous plaît m'aider à créer une vue qui me donnerait ce résultat? Le point fusionne des lignes avec le même "code" et fusionne les noms dans la colonne "nom". Tous les autres champs sont identiques à 100% pour les lignes ayant le même "code".

Merci.

+0

j'ai essayé avec le groupe par mais je manque de compétences sql:/ – no9

+1

Cela a été demandé tant de fois. Faites une recherche rapide avec les balises sql-server et group-concat – Lamak

+1

duplication possible de [Mimic group_concat() combiné avec le groupe] (http://stackoverflow.com/questions/10298805/mimic-group-concat-combined-with- groupe) – Lamak

Répondre

3

Essayez cette

SELECT Code, 

     (SELECT Name + ' ' 

      FROM Table1 t2 

      WHERE t2.Code = t1.Code 

      ORDER BY Name 

      FOR XML PATH('')) AS Name 

     FROM Table1 t1 

     GROUP BY Code ; 
+0

Cela fonctionne jusqu'à ce qu'il y ait des caractères xml spéciaux dans le nom. Vous devriez utiliser '.value' en conjonction avec la méthode' XML PATH' pour éviter ces erreurs. http://stackoverflow.com/questions/5031204/does-t-sql-have-an-aggregate-function-to-concatenate-strings/5031297#5031297 – GarethD

+0

Merci beaucoup !!! Peux-tu toucher le jackpot et te faire mettre plusieurs fois sur ce vendredi amoureux?) – no9

+0

génial! Merci pour cela! –

Questions connexes