这是 XML:
<?xml version="1.0" encoding="UTF-16"?>
<Response>
<Offers>
<Car>
<Group>ECMR</Group>
</Car>
<Insurances>
<Optional>
<Code>BE</Code>
</Optional>
<Optional>
<Code>BF</Code>
</Optional>
<Optional>
<Code>I</Code>
</Optional>
<Optional>
<Code>LD</Code>
</Optional>
</Insurances>
</Offers>
<Offers>
<Car>
<Group>CDMR</Group>
</Car>
<Insurances>
<Optional>
<Code>BA</Code>
</Optional>
<Optional>
<Code>BG</Code>
</Optional>
<Optional>
<Code>IS</Code>
</Optional>
<Optional>
<Code>LS</Code>
</Optional>
</Insurances>
</Offers>
</Response>
使用此 XML 并在 SQL Server 存储过程中的单个 SELECT 语句中,我想创建一个如下所示的结果集:
Group Codes
--------------------------
ECMR BE,BF,I,LD
CDMR BG,BA,IS,LS
结果集中的每条记录都包含一列 <Car><Group>group</Group></Car>
和另一列用于连接每个 <Insurances><Optional><Code>code</Code></Optional></Insurances>
.
这可能吗?
最佳答案
select T.N.value('(Car/Group/text())[1]', 'varchar(10)') as [Group],
(
select ','+T2.N.value('(./text())[1]', 'varchar(10)')
from T.N.nodes('Insurances/Optional/Code') as T2(N)
for xml path(''), type
).value('substring(./text()[1], 2)', 'varchar(100)') as Codes
from @XML.nodes('/Response/Offers') as T(N)
关于xml - T-SQL 和 XML - 将父元素和多个子元素连接到结果集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13390058/