Il est souvent demandé s’il est possible de concaténer les valeurs d’une colonne dans une variable, éventuellement en les séparant avec un symbole de ponctuation.
Voici comment faire, sans curseur ni expression de table commune …
Supposons la table suivante :
1 2 3 4 5 | CREATE TABLE TABLE_TEST ( Lettre CHAR(1) ) GO |
Et le jeu de données suivant :
1 2 3 4 5 | INSERT INTO dbo.TABLE_TEST (Lettre) VALUES ('A') INSERT INTO dbo.TABLE_TEST (Lettre) VALUES ('B') INSERT INTO dbo.TABLE_TEST (Lettre) VALUES ('C') INSERT INTO dbo.TABLE_TEST (Lettre) VALUES ('D') GO |
Si l’on souhaite concaténer les valeurs de la colonne Lettre dans une variable de type chaîne de caractère, avec par exemple une virgule comme séparateur, il suffit d’écrire :
1 2 3 4 5 6 | --------------------------------- -- Nicolas SOUQUET - 07/04/2009 - --------------------------------- DECLARE @concat VARCHAR(128) SELECT @concat = ISNULL(@concat, '') + Lettre + ',' FROM dbo.TABLE_TEST |
Et l’on obtient ainsi :
A, B, C, D,
Pour aller plus loin, mais cette fois avec une expression de table commune
ElSuket