1
我嘗試了一個FOR XML查詢,類似於在字幕'FOR XML表達式嵌套'下顯示的here。我的問題是我必須有三個XML元素級別。結果應該是這樣的。嵌套的FOR XML表達式
<StepTree Name="ALFKI">
<Step Name="Foo">
<Result id="123" />
<Result id="456" />
</Step>
<Step Name="Bar">
<Result id="789" />
<Result id="987" />
</Step>
</StepTree >
我試過這種類型的查詢。
SELECT 1 as TAG,
NULL as Parent,
StepTrees.Name AS [StepTree!1!Name],
NULL as [Step!2!Name],
NULL as [Result!3!id]
FROM StepTrees
WHERE StepTrees.Name = 'ALFKI'
UNION ALL
SELECT 2,
1,
StepTrees.Name,
Steps.Name,
NULL
FROM Steps
JOIN StepTrees ON Steps.StepTreeId = StepTrees.Id
WHERE StepTrees.Name = 'ALFKI'
UNION ALL
SELECT DISTINCT 3,
2,
StepTrees.Name,
Steps.Name,
Results.id
FROM StepTrees
JOIN Steps ON Steps.StepTreeId = StepTrees.Id
JOIN Results ON Steps.StepId = Results.StepId
FOR XML EXPLICIT
生成的XML如下所示。
<StepTree Name="ALFKI">
<Step Name="Foo" />
<Step Name="Bar">
<Result id="123" />
<Result id="456" />
<Result id="789" />
<Result id="987" />
</Step>
</StepTree >
任何想法?
是啊,只要我添加相同的WHERE子句的最後選擇,以及工程。不知道ORBER BY對XML形狀的影響。非常感謝。 - 盧比奧 – Rubio 2011-02-18 10:42:53