私は従業員テーブルを持っています。そのテーブルの各行を XML に変換したい
select d =
(select a.* for xml path('Root'), type, elements absent)
from MyEmployees a
以下が結果です
行 1:
<Root>
<EmployeeID>1</EmployeeID>
<FirstName>Ken</FirstName>
<LastName>Sánchez</LastName>
<Title>Chief Executive Officer</Title>
<DeptID>16</DeptID>
</Root>
行 2:
<Root>
<EmployeeID>16</EmployeeID>
<FirstName>David</FirstName>
<LastName>Bradley</LastName>
<Title>Marketing Manager</Title>
<DeptID>4</DeptID>
<ManagerID>273</ManagerID>
</Root>
結果は以下の形式のようになります
<Root>
<Item Name="FirstName" type="String">Ken</Item>
<Item Name="LastName" type="String">Sánchez</Item>
</Root>
注: タイプは、DeptId の Int である必要があります。
SQL クエリはどのように記述すればよいですか?
以下のクエリを試しました:
SELECT EmployeeID
,( SELECT firstname AS '@FirstName',lastname AS '@LastName' FROM MyEmployees AS b WHERE a.EmployeeID= b.EmployeeID FOR XML PATH('Employee') ) AS RowXML
FROM MyEmployees AS a
次のように結果を取得します。
1 <Employee FirstName="Ken" LastName="Sánchez"/>