Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在查询中使用合并内置列表进行选择_Sql_Sql Server - Fatal编程技术网

Sql 在查询中使用合并内置列表进行选择

Sql 在查询中使用合并内置列表进行选择,sql,sql-server,Sql,Sql Server,可能重复: 我有一个查询,需要返回一组字段,以及作为单个字符分隔字符串返回的数据列表 假设我有两张桌子 TBL人 tblNotes 如果用“+”分隔,我的答案会是这样的 NamePK Name Notes ------------------------------------------- 1 Fred Likes to talk+Types fast 2 Tom Joined the internet 我相信我必须使用合并函数。我

可能重复:

我有一个查询,需要返回一组字段,以及作为单个字符分隔字符串返回的数据列表

假设我有两张桌子

TBL人

tblNotes

如果用“+”分隔,我的答案会是这样的

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