逗号分隔列表

时间:2011-12-15 18:40:16

标签: sql sql-server-2008

我想将此人的姓名及所有电子邮件地址选为逗号分隔列表。我知道它与COALESCE有关,但我不知道怎么做。这是我到目前为止所做的:

select PersonName,EmailAddresses
from dbo.Person
JOIN (
    SELECT PersonID,COALESCE(EmailAddress,', ','') AS EmailAddresses
    FROM dbo.Email
) Email
ON Email.PersonID = Person.PersonID

目前,COALESCE每人仅返回1个电子邮件地址 我想知道是否必须写一个函数。

2 个答案:

答案 0 :(得分:4)

试试这个:

select PersonName,

(
SELECT 
  EmailAddress + ','
FROM
  dbo.Email
WHERE
  Email.PersonID = Person.PersonID
ORDER BY
 EmailAddress
FOR XML PATH ('')
) as emailAddresses

from dbo.Person

关键是FOR XML PATH('') - 它将值组合在一起作为单个字符串。

答案 1 :(得分:1)

你可以试试这个:

DECLARE @EmailAddress VARCHAR(4000)

SELECT @EmailAddress = COALESCE(EmailAddress + ', ', '')
FROM dbo.Email