我正嘗試在使用FOR XML路徑的SQL 2008中創建xml輸出。這是工作的罰款:在具有相同元素名稱的FOR XML Path T-SQL查詢中多次使用屬性
<Taxonomy>
<Category Level="1">Clothing</Category>
<SubCategory Level="2">Jeans</SubCategory>
</Taxonomy>
但我想輸出是:
<Taxonomy>
<Category Level="1">Clothing</Category>
<Category Level="2">Jeans</Category>
</Taxonomy>
當然你也可以爲如下代碼:
1 as 'Taxonomy/Category/@Level',
2 as 'Taxonomy/Category/@Level',
t.MainCat as 'Taxonomy/Category',
t.SubCat as 'Taxonomy/Category',
但是,這給出了一個錯誤信息: 以屬性爲中心的列'重複列名稱。相同的屬性不能在同一個XML標籤上多次生成。
可以做些什麼來獲得所需的輸出? 子選擇工作還是某種交叉應用?或者也許是一個工會?但是如何?
----編輯 - 幾個答案後,用下面的解決方案提出了:
SELECT
1 as 'Category/@Level',
t.Cat as 'Category'
FROM table t
UNION
SELECT
2 as 'Category/@Level',
t.SubCat as 'Category'
FROM table t
FOR XML PATH (''), ROOT('Taxonomy')
給出了這樣的輸出:
<Taxonomy>
<Category Level="1">Clothing</Category>
<Category Level="2">Jeans</Category>
</Taxonomy>
還是要弄清楚如何把這個部分編碼的更大的代碼與幾個'嵌套'FOR XML的已經
你能顯示實際的查詢和一些示例數據嗎? –
您真正的查詢是否打算生成多個Taxonomy元素?即每個「t」有一個元素(無論是「t」)? – AaronLS
是的,每個類別都有一個元素,每個元素都有一個用於類別級別(層次結構)的屬性 – J3FFK