SORU
12 Ocak 2010, Salı


SQL Server: Bir Sütuna Sınırlandırmak Birden fazla Satır Virgül miyim?

Oluşturma SQL Virgülle Ayrılmış listesi

SQL Server bir veritabanı ya da böyle bir şey birleştirmeye çalışıyorum:

[TicketID], [Person]
 T0001       Alice
 T0001       Bob
 T0002       Catherine
 T0002       Doug
 T0003       Elaine

Bu içine:

[TicketID], [People]
 T0001       Alice, Bob
 T0002       Catherine, Doug
 T0003       Elaine

SQL Server ve Oracle hem de bunu yapmam gerek.

Burada ihtiyacım olan şey tam mı, MySQL fonksiyonu GROUP_CONCAT buldum ama MySQL burada bir seçenek değildir.

DÜZENLEME:Test tezgahı:

DECLARE @Tickets TABLE (
    [TicketID] char(5) NOT NULL,
    [Person] nvarchar(15) NOT NULL
)

INSERT INTO @Tickets VALUES
    ('T0001', 'Alice'),
    ('T0001', 'Bob'),
    ('T0002', 'Catherine'),
    ('T0002', 'Doug'),
    ('T0003', 'Elaine')

SELECT * FROM @Tickets

CEVAP
12 Ocak 2010, Salı


Burada SQL Server 2005'te çalışan bir çözüm :

SELECT t.TicketID,
       STUFF(ISNULL((SELECT ', '   x.Person
                FROM @Tickets x
               WHERE x.TicketID = t.TicketID
            GROUP BY x.Person
             FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), ''), 1, 2, '') [No Preceeding Comma],
       ISNULL((SELECT ', '   x.Person
                FROM @Tickets x
               WHERE x.TicketID = t.TicketID
            GROUP BY x.Person
             FOR XML PATH (''), TYPE).value('.','VARCHAR(max)'), '') [Preceeding Comma If Not Empty]
  FROM @Tickets t
GROUP BY t.TicketID

Referans:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • iNCH

    iNCH

    20 Temmuz 2009
  • Liz Morgan

    Liz Morgan

    4 Aralık 2011
  • REK Roth Productions

    REK Roth Pro

    8 Ocak 2011