我正在尝试连接焊工姓名的连接。 这就是我所拥有的:
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
我能够获得我想要的信息,但有一点问题。 我想要的是“约翰史密斯,大卫罗杰斯,彼得西蒙斯”等等。换句话说,用逗号分隔的全名。 但我收到了“约翰,史密斯,大卫,罗杰斯,彼得,西蒙斯”......
任何帮助表示感谢。
提前致谢。
答案 0 :(得分:3)
您的REPLACE将用逗号替换所有空格。相反,请将逗号作为查询的一部分,并使用STUFF删除第一次出现的逗号。如果任何名称字段为NULL,您可能还希望使用COALESCE。
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
答案 1 :(得分:0)
您正在使用逗号和空格替换结果中的单个空格。
如果从查询中删除REPLACE,结果是什么?