Forum

SQL Server Satırlar...
 
Bildirimler
Hepsini Temizle

[Çözüldü] SQL Server Satırları Virgülle Birleştirme

Ufuk H.
(@ufukh)
Üye

Herkese Selamlar

Yaptığım Sorguyla Gelen 

Select
A2.TARIH,
A2.SERI,
A2.FATURANO,
A2.CARI,
A2.VERGINO,
A2.TCNO,
COALESCE (A2.MALZEME_ADI + ',', ''),
COALESCE (STR(A2.MIKTAR,9,2) + ',', '-'),
COALESCE (A2.BIRIM + ',', ''),
A2.MATRAH,
A2.KDV
FROM A2

 

Tarih Fiş No Unvan VerNo Malzeme Miktar Birim Matrah KDV
08.09.2015 ATX2015000013655 A  Tekstil Tic. A. Ş. 10373986 Karton Etiket,   8500.00, ADET, 10598,93 1907,81
08.09.2015 ATX2015000013655 A  Tekstil Tic. A. Ş. 10373986 Perçin (Rivet),  15500.00, ADET, 10598,93 1907,81
08.09.2015 ATX2015000013655 A  Tekstil Tic. A. Ş. 10373986 Düğme,   7000.00, ADET, 10598,93 1907,81
08.09.2015 ATX2015000013655 A  Tekstil Tic. A. Ş. 10373986 Muhtelif Malzeme,   3000.00, ADET, 10598,93 1907,81
08.09.2015 ATX2015000013679 A  Tekstil Tic. A. Ş. 10373986 Karton Etiket,   2500.00, ADET, 846,28 147,05
08.09.2015 ATX2015000013679 A  Tekstil Tic. A. Ş. 10373986 Dokuma Etiket,    300.00, ADET, 846,28 147,05
08.09.2015 ATX2015000013680 A  Tekstil Tic. A. Ş. 10373986 Dokuma Etiket,    100.00, ADET, 17,6 1,41
08.09.2015 ATX2015000013681 A  Tekstil Tic. A. Ş. 10373986 Karton Etiket,   1352.00, ADET, 368,31 66,3
                 

Gelmesini İstediğim Sonuç

 

Tarih Fiş No Unvan VerNo Malzeme Miktar Birim Matrah KDV
08.09.2015 ATX2015000013655 A  Tekstil Tic. A. Ş. 10373986 Karton Etiket,Perçin (Rivet),Düğme,Muhtelif Malzeme   8500.00, 15500.00,7000.00,3000 ADET,ADET,ADET,ADET 10598,93 1907,81
08.09.2015 ATX2015000013679 A  Tekstil Tic. A. Ş. 10373986 Karton Etiket,Dokuma Etiket   2500.00,300.00 ADET,ADET 846,28 147,05
08.09.2015 ATX2015000013680 A  Tekstil Tic. A. Ş. 10373986 Dokuma Etiket,    100.00, ADET, 17,6 1,41
08.09.2015 ATX2015000013681 A  Tekstil Tic. A. Ş. 10373986 Karton Etiket,   1352.00, ADET, 368,31 66,3

Üst Tablodaki Verileri Malzeme, Miktar ve Birim olarak virgülle birleştime istiyorum.

Yukarıdaki Sorguda olduğu gibi COALESCE fonksiyonu ile denedim ama sonuç ilk tablodaki gibi çıktı sadece sonuna virgül ekledi.

Şimdiden yardımcı arkadaşlara teşekkürler

 

Alıntı
Konu başlatıcı Gönderildi : 12/09/2015 20:44

oldmember
(@yavuzfilizlibay)
Üye

Merhaba

Stuff komutu ile deneyebilir misiniz

https://technet.microsoft.com/en-us/library/ms188043(v=sql.110).aspx

CevapAlıntı
Gönderildi : 13/09/2015 04:20

Ufuk H.
(@ufukh)
Üye

Öncelikle Tavsiyeniz için teşekkürler

Stuff Komutunu biraz incelediğimde araya başa yada sona karakter eklemeye yarıyor.

Peki satırları nasıl getirtebilirim.

CevapAlıntı
Konu başlatıcı Gönderildi : 17/09/2015 16:12

oldmember
(@yavuzfilizlibay)
Üye

Aşağıdaki konuda örnekler var, yaomak istediğiniz bunun gibi  bir şey midir?

 

http://stackoverflow.com/questions/2046037/sql-server-can-i-comma-delimit-multiple-rows-into-one-column

CevapAlıntı
Gönderildi : 17/09/2015 16:58

Ufuk H.
(@ufukh)
Üye

Biraz Daha Özetleyeyim 

ID AD TEL
1 UFUK 2125990099
2 AHMET 3216546421
3 UFUK 2165465454
4 MEHMET 3162315412

Tabloda gördüğünüz gibi aynı isim iki tane Ufuk var. Select sorgumun aşağıdaki sonucu döndürmesini istiyorum.

Yani aynı kişiye ait telefon numaralrını tek satırda virgülle yada tire(-) gibi değerle birleştirmek..

Stuff değerleri değiştirmeye yarıyor daha çok araştırdığıma göre 

 

AD TEL NOLARI
UFUK 2125990099 , 2165465454
AHMET 3216546421
MEHMET 3162315412

 

CevapAlıntı
Konu başlatıcı Gönderildi : 17/09/2015 18:19

Semih YERLİKAYA
(@SemihYERLiKAYA)
Üye

Merhaba,

 

aşağıdaki yöntem sanırım işinizi görecektir

 

ilk önce telefon numaralarını alabileceğin bir fonksiyon yapalım

 

ALTER FUNCTION TELEFONGETIR
(
    @KULLANICI NVARCHAR(100)
)
RETURNS VARCHAR(300)
AS
    BEGIN
DECLARE @TELNO NVARCHAR(300) SET @TELNO=''

SELECT @[email protected]+' , '+TELEFON FROM TELEFONLAR T WHERE KULLANICIADI = @KULLANICI

DECLARE @GTEL NVARCHAR(100) SET @GTEL = SUBSTRING(@TELNO,1,13)

RETURN LTRIM(STUFF(@TELNO,2,1,''))
    END

 

sonrasında sorgunu aşağıdaki gibi düzenlemelisin

SELECT KULLANICIADI,DBO.TELEFONGETIR(KULLANICIADI)TELEFONLAR FROM TELEFONLAR GROUP BY KULLANICIADI

 

ID          KULLANICIADI                                       TELEFON
----------- --------------------------------------
1           UFUK                                               2125990099
2           AHMET                                              3216546421
3           UFUK                                               2165465454
4           MEHMET                                             3162315412

KULLANICIADI                                       TELEFONLAR
--------------------------------------------------
AHMET                                              3216546421
MEHMET                                             3162315412
UFUK                                               2125990099 , 2165465454

 

 

kolay gelsin

CevapAlıntı
Gönderildi : 17/09/2015 20:03

Ufuk H.
(@ufukh)
Üye

Çok Teşekkür ederim en başta dediğiniz Stuff komutu ile bende az önce hallettim

CevapAlıntı
Konu başlatıcı Gönderildi : 17/09/2015 20:06

mehmet2327
(@mehmet2327)
Üye

Semih Bey merhaba,

Yazmış olduğunuz fonksiyon ile tam istediğim sonucu aldım. Desteğiniz için çok teşekkür ederim.

CevapAlıntı
Gönderildi : 11/06/2018 12:28

Nergiz Koş
(@nergiz)
Üye

@ufukhundur Merhaba, 

Sonuca vardığınız kodu paylaşma ihtimaliniz var mı ? 

CevapAlıntı
Gönderildi : 07/12/2021 10:51

Ufuk H.
(@ufukh)
Üye

@nergiz

SELECT
A.TARIH,
A.SERI,
A.FATURANO,
A.CARI,
A.VERGINO,
A.TCNO,
REPLACE((LEFT(A.MALZEMELER, LEN(A.MALZEMELER) - 1)),' , ',',') AS MALZEMELER,
REPLACE((LEFT(A.MIKTAR, LEN(A.MIKTAR) - 1)),' , ',',') AS MIKTAR,
A.MATRAH,
A.KDV
FROM
(SELECT
SS.TARIH,
SS.SERI,
SS.FATURANO,
SS.CARI,
SS.VERGINO,
SS.TCNO,
STUFF((SELECT US.MALZEME_ADI + ' , ' FROM TempView US WHERE (US.FATURANO = SS.FATURANO) FOR XML PATH('')), 1, 0, '') AS MALZEMELER,
STUFF((SELECT US.MIKTAR + ' , ' FROM TempView US WHERE (US.FATURANO = SS.FATURANO) FOR XML PATH('')), 1, 0, '') AS MIKTAR,
SS.MATRAH, SS.KDV
FROM TempView SS
GROUP BY SS.TARIH, SS.SERI, SS.FATURANO, SS.CARI, SS.VERGINO, SS.TCNO, SS.MATRAH, SS.KDV) A

CevapAlıntı
Konu başlatıcı Gönderildi : 07/12/2021 11:02
Hakan Uzuner beğendi

Nergiz Koş
(@nergiz)
Üye

@ufukh çok teşekkür ederim. 

İyi günler.

CevapAlıntı
Gönderildi : 07/12/2021 13:28

Paylaş: