Как получить несколько строк в одной строке в виде строки?

У меня есть две таблицы "один ко многим":

Table1

ID    Name
1     Abe
2     David
3     Orly

Table2

ID    email
1     a@zz.com
1     ab@zz.com
1     abe@zz.com
2     dav@zz.com
2     d@zz.com
3     orly@zz.com
3     o@zz.com

Мне нужен вывод вроде этого:

1 Abe a@zz.com, ab@zz.com, abe@zz.com
2 David dav@zz.com, d@zz.com
3 Orly orly@zz.com, o@zz.com

Я знаю, что это не сработает, потому что внутренний SELECT не является одной строкой:

SELECT 
    ID, Name, 
    (SELECT email FROM Table2  WHERE Table2.ID = Table1.ID) AS emails 
FROM Table1

Я пытался применить:

DECLARE @emails VARCHAR(999)

SELECT [ID],[Name], 
     (SELECT @emails = COALESCE(@emails + ', ', '') + [email] 
      FROM Table2) AS 'emails' 
FROM Table1

но безуспешно.

Как это можно решить?

Спасибо.

12
задан elarrow 1 November 2011 в 06:56
поделиться