Sql server 如何使用具有多个子节点的sql将表数据转换为xml格式
我的表格结构如下:Sql server 如何使用具有多个子节点的sql将表数据转换为xml格式,sql-server,xml,tsql,Sql Server,Xml,Tsql,我的表格结构如下: SELECT [EmpID], [EmpName], [DeptName], [BirthDate] FROM [dbo].[Employees] 我想将此表数据转换为XML,最终输出如下: <Employees> <Department DeptName="ABC"> <Employee EmpID="1"> <EmpName>Davol
SELECT
[EmpID], [EmpName],
[DeptName],
[BirthDate]
FROM
[dbo].[Employees]
我想将此表数据转换为XML,最终输出如下:
<Employees>
<Department DeptName="ABC">
<Employee EmpID="1">
<EmpName>Davolio</EmpName>
<BirthDate>10/12/1989</BirthDate>
</Employee>
<Employee EmpID="2">
<EmpName>Andrew</EmpName>
<BirthDate>05/02/1985</BirthDate>
</Employee>
</Department>
<Department DeptName="DEF">
<Employee EmpID="3">
<EmpName>David</EmpName>
<BirthDate>11/09/1982</BirthDate>
</Employee>
</Department>`enter code here
</Employees>
达沃利奥
10/12/1989
安得烈
05/02/1985
大卫
11/09/1982
`在这里输入代码
试试这个
SELECT [DeptName]
,( SELECT [EmpID],
[EmpName],
[BirthDate]
FROM @table E
WHERE E.DeptName = D.DeptName
FOR XML PATH ('Employee'),TYPE
)
FROM @table D
GROUP BY [DEPTNAME]
FOR XML PATH ('Department'),type,ROOT('Employees')
@saiv一个小提示:如果您想将
DeptName
和EmpID
作为属性(如给定示例中所示),则必须分别将别名添加为[@DeptName]
<代码>作为[@EmpID]。请注意,XML将使用ISO8601,因此日期看起来像1982-09-11T00:00:00