SQLServerPonieważ ostatnio często w moim otoczeniu pojawiało się pytanie „Jak skleić wartości z jednej kolumny w ciąg znaków oddzielonych przecinkami” postanowiłem przedstawić jedną z najszybszych metod na zrealizowanie tego zadania (oczywiście nie jest ona pozbawiona wad):

DECLARE @Out VARCHAR(XXXX)

SELECT @Out = COALESCE(@Out+',','')+[column]
FROM [table]

SELECT @Out

A oto mały przykład pokazujący działanie tego zapytania

CREATE TABLE Strings
(
[String] VARCHAR(1000)
,[String2] VARCHAR(1000)
,[Int] INT
)
INSERT INTO Strings ([String],[String2],[Int]) VALUES('a','a2',1)
INSERT INTO Strings ([String],[String2],[Int]) VALUES('b','b2',2)
INSERT INTO Strings ([String],[String2],[Int]) VALUES('c','c2',3)
INSERT INTO Strings ([String],[String2],[Int]) VALUES('d','d2',4)

DECLARE @Out VARCHAR(4000)
SELECT @Out = COALESCE(@Out+',','')+[String]+'['+[String2]+']-'+CONVERT(VARCHAR,[Int])
FROM [Strings]

SELECT @Out

DROP TABLE [Strings]

Rozwiązanie działa na pewno na wersjach SQL Server 2000, 2005 i 2008. Oczywiście istnieje jeszcze wiele innych metod wykonania tego zadania ale ta wydaje się być najprostszą z nich.