2017-10-19 2 views
0

J'utilise la solution trouvée here mais je dois ignorer la commande dans FOR XML PATH.POUR CHEMIN XML Ignorer Ordre alphabétique

Les données de l'échantillon est:

ID  DisplayName 
1  Editor 
1  Reviewer 
7  EIC 
7  Editor 
7  Reviewer 
7  Editor 
19  EIC 
19  Editor 
19  Reviewer 

Et le résultat de la solution est:

ID  DisplayName 
1  Editor, Reviewer 
7  Editor, EIC, Reviewer 
19  Editor, EIC, Reviewer 

Je dois trouver un moyen d'arrêter FOR XML PATH d'arranger les chaînes et donnent des résultats dans l'ordre exact comme :

ID  DisplayName 
1  Editor, Reviewer 
7  EIC, Editor, Reviewer, Editor 
19  EIC, Editor, Reviewer 

MISE À JOUR:

Ma table ressemble à quelque chose comme:

ID  DisplayName  Sequence 
1  Editor   1 
1  Reviewer   2 
7  EIC    1 
7  Editor   2 
7  Reviewer   3 
7  Editor   4 
19  EIC    1 
19  Editor   2 
19  Reviewer   3 

Je le veux combiner les chaînes en fonction de la séquence de chaque ID.

+1

Il n'y a pas d'ordre "exact" sauf si vous spécifiez une colonne qui génère la commande dans votre exemple de sortie d'une colonne. En fait, même la commande que vous voyez actuellement peut changer à tout moment, et SQL Server est libre d'utiliser la commande qu'il souhaite. –

+0

@TimBiegeleisen Merci pour votre réponse Tim, s'il vous plaît voir la mise à jour sur la question que j'ai faite. – Kevin

+0

Gordon a déjà répondu à votre question. –

Répondre

2

Ceci est trop long pour un commentaire. Les tables SQL représentent non ordonnées. Il n'y a pas d'ordre dans les lignes, à moins qu'une colonne spécifie la commande. Par conséquent, vous ne pouvez pas avoir les résultats «dans le même ordre» que les lignes d'origine, car le concept n'a aucun sens.

Si vous avez une colonne de commande, vous pouvez utiliser:

SELECT id, 
     STUFF((SELECT ', ' + DisplayName 
       FROM #t b 
       WHERE b.ID = a.ID 
       ORDER BY b.Sequence 
       FOR XML PATH('') 
       ), 1, 2, '' 
      ) as displaynames 
FROM (SELECT DISTINCT ID FROM #t) a; 

Ici Sequence est la colonne qui spécifie l'ordre par votre question mise à jour.

+0

J'ai essayé celui-ci mais je n'ai pas travaillé. S'il vous plaît voir ce SQLFiddle http://www.sqlfiddle.com/#!6/b2e655/5. Je vous remercie. – Kevin

+0

Je l'ai fonctionné maintenant, juste une erreur sur le nom de la table. Je vous remercie. – Kevin