Forum
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
Ö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.
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 |
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
Çok Teşekkür ederim en başta dediğiniz Stuff komutu ile bende az önce hallettim
Semih Bey merhaba,
Yazmış olduğunuz fonksiyon ile tam istediğim sonucu aldım. Desteğiniz için çok teşekkür ederim.
@ufukhundur Merhaba,
Sonuca vardığınız kodu paylaşma ihtimaliniz var mı ?
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