无法在 SQL Server 中将 XML PATH 与 UNION ALL 一起使用



>我使用以下代码生成逗号单独的值,这是在没有UNION ALL的情况下完美工作之前,但是一旦我UNION ALL与另一个 SELECT 一起应用,那么它就会显示类似 XML 的输出。查询如下所示:

SELECT ISNULL(STUFF((
SELECT plant from (
SELECT DISTINCT ', ' + Plant as Plant
FROM ASP_MstSKUPlantMapping SKUPM 
WHERE SKUID = '702953' AND Plant LIKE 'P%'
UNION ALL
SELECT DISTINCT ', ' + Plant as Plant
FROM ASP_MstSKUPlantMapping SKUPM 
WHERE SKUID = '702953' AND Plant LIKE 'S%'
) Temp
FOR XML PATH('')), 1, 2,''),'')

电流输出:

lant>, PN05</plant><plant>, PN10</plant>

预期输出:

PN05, PN10

编辑:如果我删除了as Plant这个别名,那么它会显示一个错误:

No column name was specified for column 1 of 'Temp'.

我认为您不需要为此使用 UNION ALL。
它来自同一个表,所以它只是 WHERE 子句要处理的东西。

SELECT 
ISNULL(STUFF((
SELECT CONCAT(', ', Plant)
FROM ASP_MstSKUPlantMapping SKUPM
WHERE SKUID = '702953' AND Plant LIKE '[PS]%'
GROUP BY Plant
ORDER BY Plant
FOR XML PATH('')
), 1, 2, ''),'') AS [Plants];

最新更新