SQL Server : concatener des lignes avec STUFF

Sur un des projets sur lequel j’ai travaillé, un des besoins était de concaténer des informations présentes sur plusieurs lignes en une ligne avec un dénominateur commun.
Ce traitement était uniquement possible côté SQL, étant donné que le résultat de cette requête était directement affiché, sans traitement préalable possible. Sinon, dans la plupart des cas, j’aurai fait ce traitement dans le code dans la partie Business de l’application.

Exemple

Prenons les tables suivantes, l’une liste des départements, l’autre liste des villes dont chacune est liée à un département (relation 1-n)

SQLStuff01

 

Dans ma requête, je veux pouvoir concaténer sur une même ligne, l’ensemble des villes d’un département donné (le dénominateur commun).
Le résultat de la requête doit nous donner le résultat suivant :

SQLStuff02

 

Voici donc la requête à exécuter, avec la fonction STUFF :

SQLStuff03

 

Encore une fois, j’ai utilisé cette requête dans un cas d’affichage bien précis! A mes yeux ce n’est pas la meilleure des pratiques, c’est un traitement que l’on devrait pouvoir faire plutôt dans la partie code. Néanmoins on peut utiliser ce type de requête dans une View SQL et l’appeler directement par exemple dans un rapport SSRS…

Suggestion d'articles

Partagez:

Une réflexion au sujet de « SQL Server : concatener des lignes avec STUFF »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *