我正在创建一个表,如下所示:
CREATE TABLE dbo.Test
(
A int,
B int
)
GO
INSERT INTO Test VALUES (1, 11)
GO
INSERT INTO Test VALUES (5, 55)
GO
INSERT INTO Test VALUES (4, 44)
GO
我有一个将其转换为 XML 的查询:
SELECT A,B
FROM Test
ORDER BY A
FOR XML AUTO, ROOT ('myroot'), ELEMENTS
我需要使用上面的查询作为子查询来获得以下结果:
A B
1 11
4 44
5 55
我正在尝试这样的查询,但它给出了一个错误:
SELECT Z.Value('@A', 'INT'),
Z.Value('@B', 'INT')
FROM (SELECT A, B
FROM Test
ORDER BY A
FOR XML AUTO,Elements, ROOT ('myroot')) Doc(Z)
消息 4121,级别 16,状态 1,行 1 找不到列“Z”或用户定义的函数或聚合“Z.Value”,或者 > 名称不明确。
我可以编写一个如下所示的简单查询来获得结果,但要求是我必须将其转换为 XMl,然后使用子查询从中检索相同的结果。
Select * from test order by A
我知道我可以将 For XML 返回的记录插入表变量中,然后使用 Cross apply 来获取结果,但如上所述,我希望在没有任何临时表或临时变量的情况下在单个查询中完成此操作。