Forum

SQL Server Satırlar...
 
Bildirimler
Hepsini Temizle

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

9 Yazılar
4 Üyeler
2 Reactions
14.5 K Görüntüleme
(@ufukh)
Gönderiler: 109
Estimable Member
Konu başlatıcı
 

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

 

 
Gönderildi : 12/09/2015 20:44

(@ufukh)
Gönderiler: 109
Estimable Member
Konu başlatıcı
 

Ö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.

 
Gönderildi : 17/09/2015 16:12

(@ufukh)
Gönderiler: 109
Estimable Member
Konu başlatıcı
 

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

 

 
Gönderildi : 17/09/2015 18:19

(@SemihYERLiKAYA)
Gönderiler: 11
Active Member
 

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 @TELNO=@TELNO+' , '+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

 
Gönderildi : 17/09/2015 20:03

(@ufukh)
Gönderiler: 109
Estimable Member
Konu başlatıcı
 

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

 
Gönderildi : 17/09/2015 20:06

(@mehmet2327)
Gönderiler: 1
New Member
 

Semih Bey merhaba,

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

 
Gönderildi : 11/06/2018 12:28

(@nergiz)
Gönderiler: 2
New Member
 

@ufukhundur Merhaba, 

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

 
Gönderildi : 07/12/2021 10:51

(@ufukh)
Gönderiler: 109
Estimable Member
Konu başlatıcı
 

@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

 
Gönderildi : 07/12/2021 11:02

(@nergiz)
Gönderiler: 2
New Member
 

@ufukh çok teşekkür ederim. 

İyi günler.

 
Gönderildi : 07/12/2021 13:28

Paylaş: