J'essaie de faire migrer une application basée sur MySQL vers Microsoft SQL Server 2005 (pas par choix, mais c'est la vie).
Dans l'application originale, nous avons utilisé presque entièrement conformes à la norme ANSI-SQL, à une exception près : nous avons utilisé le langage de programmation MySQL group_concat
fonction assez fréquemment.
group_concat
au fait, fait ceci : étant donné une table de, disons, noms d'employés et projets...
SELECT empName, projID FROM project_members;
retours :
ANDY | A100
ANDY | B391
ANDY | X010
TOM | A100
TOM | A510
... et voici ce que vous obtenez avec group_concat :
SELECT
empName, group_concat(projID SEPARATOR ' / ')
FROM
project_members
GROUP BY
empName;
retours :
ANDY | A100 / B391 / X010
TOM | A100 / A510
Donc ce que j'aimerais savoir c'est : Est-il possible d'écrire, disons, une fonction définie par l'utilisateur dans SQL Server qui émule la fonctionnalité de group_concat
?
Je n'ai pratiquement aucune expérience de l'utilisation d'UDF, de procédures stockées ou autres, juste du SQL pur et simple, alors n'abusez pas des explications :)
0 votes
Quelques liens utiles : postgresonline.com/journal/archives/191-stringagg.html y consultingblogs.emc.com/jamiethomson/archive/2009/07/16/
0 votes
C'est une vieille question, mais j'aime la solution CLR donnée ici .
0 votes
Duplicata possible de Comment créer une liste séparée par des virgules à l'aide d'une requête SQL ? - ce post est plus large donc je choisirais celui-là comme canonique
0 votes
Duplicata possible de Fonction SQL group_concat en SQL Server
0 votes
Comment savoir dans quel ordre la liste doit être construite, par exemple, vous montrez A100 / B391 / X010 mais, étant donné qu'il n'y a pas d'ordre implicite dans une base de données relationnelle, cela pourrait tout aussi bien être X010 / A100 / B391 ou toute autre combinaison.
0 votes
Duplicata de stackoverflow.com/questions/273238/
0 votes
Duplicata possible de Comment utiliser GROUP BY pour concaténer des chaînes de caractères dans SQL Server ?