sql导出为与xml相同的值
我有一个名为“Location”的表,如下所示:sql导出为与xml相同的值,sql,sql-server,xml,export,Sql,Sql Server,Xml,Export,我有一个名为“Location”的表,如下所示: society site floor room --------------------------- Apple London first office Apple London first Meeting Apple London first Conference Apple London second IT Apple London second HR Apple Rome second CCM
society site floor room
---------------------------
Apple London first office
Apple London first Meeting
Apple London first Conference
Apple London second IT
Apple London second HR
Apple Rome second CCM
Apple Rome second BM
我不想以xml格式导出该表:
<LocationData>
<Society name ="Apple">
<site name ="London">
<floor name ="first">
<room>office</room>
<room>Meeting</room>
<room>Conference</room>
</floor>
<floor name ="second">
<room>IT</room>
<room>HR</room>
</floor>
</site>
<site name ="Rome">
<floor name ="second">
<room>CCM</room>
<room>BM</room>
</floor>
</site>
</society>
</LocationData>
办公室
会合
会议
信息技术
人力资源
CCM
BM
我正在使用SQL2008。你能帮帮我吗?谢谢您的问候。在sql server中运行此操作 从位置选择* 对于XML AUTO可以这样尝试(我又添加了一个society,以显示所有级别的
1:n
结构:
DECLARE @mockup TABLE(society VARCHAR(100),[site] VARCHAR(100),[floor] VARCHAR(100),room VARCHAR(100));
INSERT INTO @mockup VALUES
('Apple','London','first','office')
,('Apple','London','first ','Meeting')
,('Apple','London','first','Conference')
,('Apple','London','second','IT')
,('Apple','London','second','HR')
,('Apple','Rome','second','CCM')
,('Apple','Rome','second','BMD')
,('Orange','Vienna','first','Test');
SELECT m1.society AS [@name]
,(
SELECT m2.[site] AS [@name]
,(
SELECT m3.[floor] AS [@name]
,(
SELECT m4.room
FROM @mockup AS m4
WHERE m4.society=m1.society AND m4.[site]=m2.[site] AND m4.[floor]=m3.[floor]
GROUP BY m4.room
FOR XML PATH(''),TYPE
)
FROM @mockup AS m3
WHERE m3.society=m1.society AND m3.[site]=m2.[site]
GROUP BY m3.[floor]
FOR XML PATH('floor'),TYPE
)
FROM @mockup AS m2
WHERE m2.society=m1.society
GROUP BY m2.[site]
FOR XML PATH('site'),TYPE
)
FROM @mockup AS m1
GROUP BY m1.society
FOR XML PATH('Society'),ROOT('LocationData');
结果
<LocationData>
<Society name="Apple">
<site name="London">
<floor name="first">
<room>Conference</room>
<room>Meeting</room>
<room>office</room>
</floor>
<floor name="second">
<room>HR</room>
<room>IT</room>
</floor>
</site>
<site name="Rome">
<floor name="second">
<room>BMD</room>
<room>CCM</room>
</floor>
</site>
</Society>
<Society name="Orange">
<site name="Vienna">
<floor name="first">
<room>Test</room>
</floor>
</site>
</Society>
</LocationData>
会议
会合
办公室
人力资源
信息技术
骨密度
CCM
试验
你应该试着自己写。这不是免费的代码编写网站。嗨,谢谢你的重播。我已经试过了,但是我得到了一份不同的报告。等等……有可能像我描述的那样写报告吗?嗨,我会避免使用自动
模式…(至少如果你知道如何使用路径
模式获得相同的结果).你依靠引擎的聪明来分析你的数据并找到最好的表示。这可能有效,也可能无效。。。