Comment à partir d'une table comme celle-ci :
Champ
-----
A
B
C
D
E
faire pour récuprer une chaîne de caractères de ce type :
"A, B, C, D, E"
Et bien voici les solutions.
La première fonctionne sur toutes les éditions de SQL Server 7 à 2005.
La seconde fonctionne sur toutes les éditions de SQL Server 2005 uniquement (Express incluse).
Source / Exemple :
-- Création de la table
IF OBJECT_ID('MaTable') IS NULL
CREATE TABLE MaTable (Champ varchar(10))
GO
-- Remplissage
INSERT INTO MaTable (Champ) VALUES ('A')
INSERT INTO MaTable (Champ) VALUES ('B')
INSERT INTO MaTable (Champ) VALUES ('C')
INSERT INTO MaTable (Champ) VALUES ('D')
INSERT INTO MaTable (Champ) VALUES ('E')
INSERT INTO MaTable (Champ) VALUES ('F')
INSERT INTO MaTable (Champ) VALUES ('G')
INSERT INTO MaTable (Champ) VALUES ('H')
-- 1ère méthode avec SQL Server 7, 2000 et 2005
DECLARE @machaine varchar(200)
SET @machaine = ''
SELECT @machaine = @machaine + Champ + ',' FROM MaTable
SELECT @machaine
-- 2ème méthode avec SQL Server 2005 uniquement
SELECT champ + ',' as 'text()'
FROM MaTable
FOR XML PATH('')
-- Supprime la table de travail
DROP TABLE MaTable
GO
Conclusion :
Il existe une 3ème méthode consistant à créer une fonction d'agrégat définie par l'utilisateur avec .net via Visual Studio (avec votre langage préféré).
A préciser vous ne pourrez pas utiliser ces 2 méthode avec GROUP BY. Seule la solution de développer une fonction en .net le pourrait, elle ne fonctionnera que sur SQL Server 2005.
Bon testS...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.