Msg 1086,Level 15,State 1,Line 20 当FOR XML子句包含set运算符时,它们在视图,内联函数,派生表和子查询中无效。要解决此问题,请使用派生表语法包装包含set运算符的SELECT,并在其上应用FOR XML。
我运行时遇到此错误:
SELECT
STUFF((
SELECT 1
UNION ALL
SELECT 2
FOR XML PATH('')
),1,0,'') [COLUMN]
在我运行时运行正常(没有Union ALL)
SELECT
STUFF((
SELECT 1
FOR XML PATH('')
),1,0,'') [COLUMN]
为什么UNION ALL不起作用或如何让它在STUFF()
内工作的任何建议?
答案 0 :(得分:17)
有一个简单的解决方法,你应该用另一个select包装你的union查询(或任何派生表)。这样做然后通常继续sintax:
select * from
(
SELECT 1 as I
UNION ALL
SELECT 2 as J
) as K
这样的东西就是你要找的东西:
SELECT STUFF((
select * from(
SELECT * from dbo.Table1 as I
UNION ALL
SELECT * from dbo.Table2 as j
) as k
FOR XML PATH('')
),1,0,'')
我检查过它完美无瑕