16 Eylül 2009 Çarşamba

TSQL: Birçok satırı tek satırda birleştirme "Rows into String"

Zaman zaman bir sütunda bulunan kayıtları çekme ihtiyacımız oluyor. Stoklar tablosundaki sto_isim field a ait ilk 5 kaydı tek satırda elde etmek için aşağıdaki basit kod çok iş görüyor.

DECLARE @StokListesi varchar(1000)
SELECT TOP 5 @StokListesi = coalesce(@StokListesi + ' / ', '') + sto_isim
FROM dbo.STOKLAR
SELECT 'Result = ' + @StokListesi


Result = (TRIO 28) GOFRET KREMA - BİTKİSEL YAĞ / (TRİO - 40) DONDURMA SOSU YAĞI / ACESULFAM / ALKALİZE - TOZ KAKAO / ALLURA RED

(1 row(s) affected)

5 yorum:

emre_dersin dedi ki...

Orhan Hocam yazdığınız fonksiyonu create ve daha sonra sorgu içinde bir sütun olarak kullanmayı nasıl yapacağız. Sorduğum soru belki sizin için çok basittir ancak yeni başladığım için bulamadım. Teşekkürler.

emre_dersin dedi ki...

Orhan Hocam yazdığınız fonksiyonu create ve daha sonra sorgu içinde bir sütun olarak kullanmayı nasıl yapacağız. Sorduğum soru belki sizin için çok basittir ancak yeni başladığım için bulamadım. Teşekkürler.

Orhan ÖCAL dedi ki...
Bu yorum yazar tarafından silindi.
Orhan ÖCAL dedi ki...

Merhaba Emre Bey,
Aşağıdaki şekilde oluşturabilirsiniz. Sadece tablo ve alanları düzenlemeniz gerekiyor.

CREATE FUNCTION [dbo].[fn_StokIsimListesi]
(
@AnaGrupKodu varchar(25)
)
RETURNS varchar(1000)
AS
BEGIN
DECLARE @StokListesi varchar(1000)

SELECT @StokListesi = coalesce(@StokListesi + ' / ', '') + sto_isim
FROM dbo.STOKLAR WITH(NOLOCK)
WHERE sto_anagrup_kod=@AnaGrupKodu

IF @StokListesi IS NULL SET @StokListesi = ''
RETURN @StokListesi
END

emre_dersin dedi ki...

Teşekkürler Hocam, Fonksiyon kullanımını anlamama çok yardımcı oldu.