我正在尝试将焊工姓名串联起来。 这就是我所拥有的:
SELECT jsd1.JuntaSoldaduraID,
REPLACE(RTRIM((SELECT s1.Nombre + ' ' + s1.ApPaterno + ' ' +
s1.ApMaterno + '' + CAST('' AS VARCHAR(MAX)) + ' '
FROM JuntaSoldaduraDetalle jsd
INNER JOIN Soldador s1 on s1.SoldadorID = jsd.SoldadorID
WHERE (jsd1.JuntaSoldaduraID = jsd.JuntaSoldaduraID)
and (jsd.TecnicaSoldadorID = 2)
FOR XML PATH (''))),' ',', ') AS NombreSoldador
FROM JuntaSoldaduraDetalle jsd1
INNER JOIN Soldador s
ON s.SoldadorID = jsd1.SoldadorID
GROUP BY jsd1.JuntaSoldaduraID
我能够获得我想要的信息,但有一点问题。 我想要的是“约翰·史密斯,大卫·罗杰斯,彼得·西蒙斯”等。换句话说,全名用逗号分隔。 但我收到“约翰、史密斯、大卫、罗杰斯、彼得、西蒙斯”..
感谢任何帮助。
提前致谢。
最佳答案
您的 REPLACE 将用逗号替换所有空格。相反,请将逗号作为查询的一部分并使用 STUFF删除第一次出现的逗号。您可能还想合并 COALESCE 的使用如果任何名称字段为 NULL。
SELECT jsd1.JuntaSoldaduraID,
STUFF((SELECT ', ' + COALESCE(s1.Nombre + ' ','')
+ COALESCE(s1.ApPaterno + ' ','')
+ COALESCE(s1.ApMaterno,'')
FROM JuntaSoldaduraDetalle jsd
INNER JOIN Soldador s1
on s1.SoldadorID = jsd.SoldadorID
WHERE jsd1.JuntaSoldaduraID = jsd.JuntaSoldaduraID
and jsd.TecnicaSoldadorID = 2
FOR XML PATH ('')),1,2,'') AS NombreSoldador
FROM JuntaSoldaduraDetalle jsd1
INNER JOIN Soldador s
ON s.SoldadorID = jsd1.SoldadorID
GROUP BY jsd1.JuntaSoldaduraID
关于sql - 在 Sql 存储过程中使用 XML PATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4318578/