23 Eylül 2008 Salı

Satırlardaki Bilgileri Kolonlarda Birleştirme (Transpose)

Bir değişken tablo tanımlayalım ve bu tabloya 3 satırlık data ekleyelim.. Amacımız bu satırları tek bir satırda, araları "," ile ayrılmış olarak göstermek


DECLARE @Multiple TABLE(TestColumn varchar(20))

INSERT INTO @Multiple

SELECT 'Test 1'

UNION SELECT 'Test 2'

UNION SELECT 'Test 3'

SELECT * FROM @Multiple

Tüm tabloyı çekersek aşağıdaki kayıt setini görebiliriz.

TestColumn

Test 1

Test 2

Test 3

Aslında özel birşey yapmıyoruz. FOR XML PATH'in xml tag leri yaratmasını ve aynı xml tag'ine alacağı satırları birleştirmesi özelliğini kullanıyoruz.

SELECT ', ' + TestColumn FROM @Multiple FOR XML PATH('')

Yukarıdaki sql cümlesi bize şöyle bir sonuç üretecek:

, Test 1, Test 2, Test 3

Şimdi de en baştaki ", " u stuff fonksiyonunu kullanarak kaldıralım.

SELECT isNull(Stuff((SELECT ', ' + TestColumn FROM @Multiple FOR XML PATH('')),1,2,''),'')

İşte sonuç :
Test
1, Test 2, Test 3

Hiç yorum yok: