21 Şubat 2017 Salı

SQL İle Tüm Kayıtları Tek Satırda Birleştirme Yöntemi

SQL İle Tüm Kayıtları Tek Satırda Birleştirme Yöntemi

Bu makalemizde benim ilk defa ihtiyaç duyduğum bir şeyi sizlerle paylaşmak istiyorum programlama tarafında çok basit bir şekilde join metod’ları ile 1’den fazla kaydın aralarında ayraç konularak birleştirilmesi sağlanabiliyorken sql’de ne yazıkki direk olarak bu işi gören fonksiyon yok.

SQL İle Tüm Kayıtları Tek Satırda Birleştirme Yöntemi

Sql’de birleştirme işlemi için sizlerle paylaşmış olduğum alttaki kodu deneyerek direk olarak birden fazla kaydın aralarında virgül ayracı konularak tek satırda birleştirildiğini görebilirsiniz.

Örnek

SQL


CREATE TABLE mytable (id int identity(1,1),
                             PersonID int, Unit varchar(10))
INSERT INTO mytable VALUES (1,'Che')
INSERT INTO mytable VALUES (1,'Mat')
INSERT INTO mytable VALUES (1,'Phy')
INSERT INTO mytable VALUES (1,'a')
INSERT INTO mytable VALUES (1,'s')
INSERT INTO mytable VALUES (1,'d')
INSERT INTO mytable VALUES (1,'p')
INSERT INTO mytable VALUES (1,'o')
INSERT INTO mytable VALUES (1,'m')
INSERT INTO mytable VALUES (1,'aa')
INSERT INTO mytable VALUES (1,'ss')
INSERT INTO mytable VALUES (1,'dd')
INSERT INTO mytable VALUES (1,'f')
INSERT INTO mytable VALUES (1,'g')
INSERT INTO mytable VALUES (1,'h')
INSERT INTO mytable VALUES (1,'ff')
INSERT INTO mytable VALUES (1,'gg')
INSERT INTO mytable VALUES (1,'hh')
INSERT INTO mytable VALUES (2,'Che2')
INSERT INTO mytable VALUES (2,'Mat2')
INSERT INTO mytable VALUES (2,'Phy2')
INSERT INTO mytable VALUES (3,'Phy3')
SELECT t1.PersonID,
       Units =REPLACE(
                        (SELECT Unit AS [data()]
                         FROM mytable t2
                         WHERE t2.PersonID = t1.PersonID
                         ORDER BY Unit
                         FOR XML PATH('') ), ' ',
                                             ',')
FROM mytable t1
GROUP BY PersonID ;


DROP TABLE mytable

Sonuç

PersonIdUnits
1a,aa,Che,d,dd,f,ff,g,gg,h,hh,m,Mat,o,p,Phy,s,ss
2Che2,Mat2,Phy2
3Phy3

1 yorum:

  1. Hocam kolay gelsin. C# form uygulamasında localdatabase den veri çekiyorum.

    Çektiğim şekil aşağıda;

    KayitNo Gönderiliği Yer Şehir Posta Ücreti

    1 Ankara Milli Eğitim Ankara 5

    2 İstanbul Milli Eğitim İstanbul 3

    3 Ankara Milli Eğitim Ankara 5

    Yapmak isteğim ise;

    KayitNo Gönderiliği Yer Şehir Posta Ücreti

    1, 3 Ankara Milli Eğitim Ankara 5

    2 İstanbul Milli Eğitim İstanbul 3

    Gönderilen Yer, Şehir ve Ücreti aynı olanları grouplandırıp tek satırda göstermek, bunu yaparken KayıtNo daki verileri aynı satıra yanyana yazmak..

    YanıtlaSil