我正在尝试创建一个类似于此的查询
SELECT
'foo' AS Detail,
'bar' AS Detail,
'baz' AS Detail
FOR XML PATH ('Header')
Run Code Online (Sandbox Code Playgroud)
生产这样的东西——
<Header>
<Detail type="A">foo</Detail>
<Detail type="B">bar</Detail>
<Detail type="C">baz</Detail>
</Header>
Run Code Online (Sandbox Code Playgroud)
并且似乎无法在不将列值分配给属性的情况下创建属性。
你的查询
SELECT
'foo' AS Detail,
'bar' AS Detail,
'baz' AS Detail
FOR XML PATH ('Header')
Run Code Online (Sandbox Code Playgroud)
将值连接到单个Detail
元素。
<Header>
<Detail>foobarbaz</Detail>
</Header>
Run Code Online (Sandbox Code Playgroud)
要拥有多个Detail
元素,您需要使用null
.
SELECT
'foo' AS Detail,
null,
'bar' AS Detail,
null,
'baz' AS Detail
FOR XML PATH ('Header')
Run Code Online (Sandbox Code Playgroud)
<Header>
<Detail>foo</Detail>
<Detail>bar</Detail>
<Detail>baz</Detail>
</Header>
Run Code Online (Sandbox Code Playgroud)
然后您使用Rob Farley@
的答案中建议的语法来获得您正在寻找的结果。
SELECT
'A' AS 'Detail/@type',
'foo' AS Detail,
null,
'B' AS 'Detail/@type',
'bar' AS Detail,
null,
'C' AS 'Detail/@type',
'baz' AS Detail
FOR XML PATH ('Header')
Run Code Online (Sandbox Code Playgroud)
<Header>
<Detail type="A">foo</Detail>
<Detail type="B">bar</Detail>
<Detail type="C">baz</Detail>
</Header>
Run Code Online (Sandbox Code Playgroud)
尝试命名您的列[@type]
多行也可能有帮助。就像是:
SELECT 'A' as [@type], 'foo'
UNION ALL
SELECT 'B' as [@type], 'bar'
UNION ALL
SELECT 'C' as [@type], 'baz'
FOR XML PATH('Detail'), ROOT('Header');
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4984 次 |
最近记录: |