Sql 在查询中使用合并内置列表进行选择
可能重复: 我有一个查询,需要返回一组字段,以及作为单个字符分隔字符串返回的数据列表 假设我有两张桌子 TBL人 tblNotes 如果用“+”分隔,我的答案会是这样的Sql 在查询中使用合并内置列表进行选择,sql,sql-server,Sql,Sql Server,可能重复: 我有一个查询,需要返回一组字段,以及作为单个字符分隔字符串返回的数据列表 假设我有两张桌子 TBL人 tblNotes 如果用“+”分隔,我的答案会是这样的 NamePK Name Notes ------------------------------------------- 1 Fred Likes to talk+Types fast 2 Tom Joined the internet 我相信我必须使用合并函数。我
NamePK Name Notes
-------------------------------------------
1 Fred Likes to talk+Types fast
2 Tom Joined the internet
我相信我必须使用合并函数。我过去曾使用它来创建逗号分隔的值,但我不确定如何在select中执行此操作。我正在使用MSSQL
有什么想法或方法吗
建议:
使用STUFF和FOR XML PATH进行连接。有关示例,请参见。如果您搜索其他涉及内容的问题,可以进行一些改进,例如消除额外的分隔符
你为什么要这么做?这是一个SQL反模式…什么版本的SQL Server?。无论如何,这个组连接的问题以前已经被问过很多次了。我建议您使用标记sql server和组concatCOALESCE进行搜索,以便处理空值,而不是数据透视。@Lamak数据透视后,连接很容易-@gunr2171-您的链接显示coalesce用于处理空值以允许合并。它没有显示使用coleasce进行连接。它尤其与多行上的concatention无关。[我强烈建议查看上面链接的答案,它们显示了实现您要求的方法。]
NameFK Note
------------------------
1 Likes to talk
1 Types fast
2 Joined the internet
NamePK Name Notes
-------------------------------------------
1 Fred Likes to talk+Types fast
2 Tom Joined the internet
SELECT p.NamePK, p.Name,
STUFF((
select '+' + n.Note
from tblNote n
where n.NameFK = p.NamePK
for xml path('')
), 1, 1, '')
FROM tblPeople p