Sql 将多行串联为单个文本字符串
我试图将多个名称连接到一个列中,但我很难做到这一点 DECLARE @Names VARCHAR(8000) SELECT p.Pato_Id @Names = COALESCE(@Names + ', ', '') + e.First_Name + ' ' + e.Last_Name FROM Patos p LEFT JOIN Pato_Owners po ON po.Pato_Id = p.Pato_Id LEFT JOIN Person e ON po.Owner_Id = e.Person_Id 声明@Names VARCHAR(8000) 挑选 p、 帕托伊德 @名称=合并(@Names+','','')+e.First\u Name+''+e.Last\u Name 从…起 帕托斯p 左连接 帕托沃 在…上 po.Pato_Id=p.Pato_Id 左连接 人物e 在…上 po.Owner\u Id=e.Person\u Id 如何做到这一点 编辑: 当我做一个正常的选择时,我得到 PatoID First Last 0 John Wort 0 Dan Mass 1 Till Bos 2 Wrap Sim 2 Port Lock 翼状头 0约翰麦汁 0 Dan质量 1至10月 2包Sim卡 2端口锁 我想要的是: PatoID Names 0 John Wort, Dan Mass 1 Till Bos 2 Wrap Sim, Port Lock 翼状体名称 0约翰·沃特,丹·马塞斯 1至10月 2套Sim卡,端口锁 我想你想要这个Sql 将多行串联为单个文本字符串,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图将多个名称连接到一个列中,但我很难做到这一点 DECLARE @Names VARCHAR(8000) SELECT p.Pato_Id @Names = COALESCE(@Names + ', ', '') + e.First_Name + ' ' + e.Last_Name FROM Patos p LEFT JOIN Pato_Owners po ON po.Pato_Id = p.Pato_Id LEFT JOIN
WITH Sales_CTE (Pato_Id, First, Last)
AS
(
Select p.Pato_Id , e.First , e.Last
FROM
Patos p
LEFT JOIN
Pato_Owners po
ON
po.Pato_Id = p.Pato_Id
LEFT JOIN
Person e
ON
po.Owner_Id = e.Person_Id
)
SELECT Pato_Id,
Substring((Select ',' + ISNULL(First,'') + ISNULL(Last,'') From Sales_CTE B Where B.Pato_Id=A.Pato_Id For XML Path('')),2,8000) As names
from Sales_CTE A group by Pato_Id;
您留下了join,这表示您可以有空名称。如果发生这种情况,这将重置名称的值
;with cte as
(
SELECT
p.Pato_Id,
coalesce(e.First_Name, '') + coalesce(' ' + e.Last_Name, '') Name
FROM
Patos p
LEFT JOIN
Pato_Owners po
ON
po.Pato_Id = p.Pato_Id
LEFT JOIN
Person e
ON
po.Owner_Id = e.Person_Id
)
select t.Pato_id
,STUFF((
select ',' + [name]
from cte t1
where t1.Pato_Id = t.Pato_Id
for xml path(''), type
).value('.', 'varchar(max)'), 1, 1, '') [Names]
from cte t
group by t.Pato_id
试试这个
DECLARE @Names VARCHAR(8000)
SELECT
p.Pato_Id,
'ServerName' = COALESCE(@Names + ', ', '') + e.First_Name + ' ' + e.Last_Name
FROM
Patos p
LEFT JOIN
Pato_Owners po
ON
po.Pato_Id = p.Pato_Id
LEFT JOIN
Person e
ON
po.Owner_Id = e.Person_Id
哪一个sql server版本?您曾经发现过这一点吗?我也遇到了类似的情况。我得到了这样一个错误:一个SELECT语句为一个变量赋值,它不能与数据检索相结合operations@DKALT那是因为你没有复制我的整个脚本,你必须省略“p.Pato_id”是的,但是我需要pI中的几个字段,因为我得到了这个错误:为变量赋值的SELECT语句不能与数据检索操作相结合。这将只连接名字和姓氏,而不是该PATO的所有记录