我只在桌子上做一个选择,只选择两列。
我想构建以下XML
<root>
<choice value='1'>choice 1</choice>
<choice value='2'>choice 2</choice>
<choice value='3'>choice 3</choice>
</root>
我现在可以得到:
<root>
<choice value="1">choice 1</choice>
</root>
<root>
<choice value="2">choice 2</choice>
</root>
<root>
<choice value="3">choice 3</choice>
</root>
使用此SQL:
SELECT
ID AS 'choice/@value',
DisplayName AS 'choice'
FROM tablename
WHERE [Status] = 'open'
FOR XML PATH ('root')
我需要更改才能获得该格式?即一个根元素中的选择元素?
谢谢,
答案 0 :(得分:1)
好吧我觉得我明白了......
SELECT
ID AS 'choice/@value',
DisplayName AS 'choice'
FROM tablename
WHERE [Status] = 'open'
FOR XML PATH ('') , ROOT('root')
答案 1 :(得分:1)
你找到了答案,很棒(+1来自我方),还有一个选择: - )
DECLARE @tbl TABLE(ID INT IDENTITY,DisplayName VARCHAR(100));
INSERT INTO @tbl VALUES('Choice 1'),('Choice 2');
SELECT ID AS [@value]
,DisplayName AS [*]
FROM @tbl
FOR XML PATH('choice'),ROOT('root')
PATH('x')
为每个表行提供一个节点,而ROOT('y')
将整个输出包装到根元素中。
上面的代码将完全相同,但更接近它的意图......