MS SQL、分组、XML等。。。需要有关此查询的帮助吗
我需要你的帮助。遗憾的是,我对SQL的了解不如对C#(或大多数其他语言)的了解,而且我对这个查询已经达到了极限。这篇文章可能有点冗长,所以我为此提前道歉,但我想确保我包括了所有必要的信息 我的目标是创建一个查询,从SQL中选择数据,按其中一列的子字符串值对其进行分组,并以XML输出。我离得很近,但我撞到墙了 下面是一个示例,说明它应该是什么样子:MS SQL、分组、XML等。。。需要有关此查询的帮助吗,sql,sql-server,tsql,Sql,Sql Server,Tsql,我需要你的帮助。遗憾的是,我对SQL的了解不如对C#(或大多数其他语言)的了解,而且我对这个查询已经达到了极限。这篇文章可能有点冗长,所以我为此提前道歉,但我想确保我包括了所有必要的信息 我的目标是创建一个查询,从SQL中选择数据,按其中一列的子字符串值对其进行分组,并以XML输出。我离得很近,但我撞到墙了 下面是一个示例,说明它应该是什么样子: <EXAMPLE_DATA> <headEnd nam="AAAA"> <hardware fromDevi
<EXAMPLE_DATA>
<headEnd nam="AAAA">
<hardware fromDevice="ExampleDeviceAAAA" />
<hardware fromDevice="ExampleDeviceAAAA" />
<hardware fromDevice="ExampleDeviceAAAA" />
</headEnd>
<headEnd nam="BBBB">
<hardware fromDevice="ExampleDeviceBBBB" />
<hardware fromDevice="ExampleDeviceBBBB" />
<hardware fromDevice="ExampleDeviceBBBB" />
</EXAMPLE_DATA>
为了让这篇文章更容易阅读,我删除了很多非必要的专栏
那么,看看我需要XML是什么样子的,这可能吗?我想一切都有可能。。。但在这种情况下,我完全被难住了
谢谢你的阅读
编辑:为了确保我的问题清楚,我需要的是SQL代码输出由hardware.Name的子字符串查询分组的XML数据。我试图使输出看起来像上面的第一个XML块。给你:
SELECT
RIGHT(categ.Name, 4) as "@nam" ,
(
SELECT hardware.Name as "@fromDevice"
FROM tblHardware AS hardware
WHERE RIGHT(categ.Name, 4) = RIGHT(hardware.Name, 4)
for xml path ('hardware') , type
)
FROM tblHardware as categ
GROUP BY RIGHT(categ.Name, 4)
for xml path ('headEnd'), root ('EXAMPLE_DATA')
给你:
SELECT
RIGHT(categ.Name, 4) as "@nam" ,
(
SELECT hardware.Name as "@fromDevice"
FROM tblHardware AS hardware
WHERE RIGHT(categ.Name, 4) = RIGHT(hardware.Name, 4)
for xml path ('hardware') , type
)
FROM tblHardware as categ
GROUP BY RIGHT(categ.Name, 4)
for xml path ('headEnd'), root ('EXAMPLE_DATA')
问题到底是什么?您是否需要XML转换脚本或TSQL更改脚本,或者您是否解决了问题?请看前两个XML块。。。您将看到,第一个声明我的输出应该像那个,而不是第二个。所以问题是,有人能帮我输出数据,使它看起来像第二个XML块吗?问题到底是什么?您是否需要XML转换脚本或TSQL更改脚本,或者您是否解决了问题?请看前两个XML块。。。您将看到,第一个声明我的输出应该像那个,而不是第二个。所以问题是,有人能帮我输出数据,使它看起来像第二个XML块吗?
SELECT
RIGHT(categ.Name, 4) as "@nam" ,
(
SELECT hardware.Name as "@fromDevice"
FROM tblHardware AS hardware
WHERE RIGHT(categ.Name, 4) = RIGHT(hardware.Name, 4)
for xml path ('hardware') , type
)
FROM tblHardware as categ
GROUP BY RIGHT(categ.Name, 4)
for xml path ('headEnd'), root ('EXAMPLE_DATA')