我想从数据库中的单个表创建一个复杂的XML结构。我设法添加了5个不同的节点,如下所示:
SELECT 1 AS Tag
,NULL AS Parent
,NULL AS [Document-OrderResponse!1]
,NULL AS [OrderResponse-Header!2]
,NULL AS [OrderResponseType!3]
,NULL AS [OrderResponseNumber!4]
,NULL AS [OrderResponseDate!5]
,NULL AS [OrderNumber!6]
,NULL AS [DocumentFunctionCode!7]
,NULL AS [DetailsOfTransport!8]
,NULL AS [TermsOfDelivery!9]
UNION ALL
SELECT 2 AS Tag
,1 AS Parent
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
UNION ALL
SELECT 3 AS Tag
,2 AS Parent
,NULL
,NULL
,'Type'
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
UNION ALL
SELECT 4 AS Tag
,2 AS Parent
,NULL
,NULL
,NULL
,'Number'
,NULL
,NULL
,NULL
,NULL
,NULL
UNION ALL
SELECT 5 AS Tag
,2 AS Parent
,NULL
,NULL
,NULL
,NULL
,'Date'
,NULL
,NULL
,NULL
,NULL
FOR XML explicit
最终文档将嵌套更多,并且将会有大约15个值。如果我继续构建这样的查询,它将是几页长。帮我重新创建它。
结果如下(没有换行符和缩进):
<Document-OrderResponse>
<OrderResponse-Header>
<OrderResponseType>Type</OrderResponseType>
<OrderResponseNumber>Number</OrderResponseNumber>
<OrderResponseDate>Date</OrderResponseDate>
</OrderResponse-Header>
</Document-OrderResponse>
答案 0 :(得分:1)
尝试使用FOR XML PATH()。
您的查询可能如下所示:
select T.OrderResponseType,
T.OrderResponseNumber,
T.OrderResponseDate
from YourTable as T
for xml path('OrderResponse-Header'), root('Document-OrderResponse')