我想将此人的姓名及所有电子邮件地址选为逗号分隔列表。我知道它与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个电子邮件地址 我想知道是否必须写一个函数。
答案 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