输入数据
id year Name provid prov
1 1995 MAC 1995-11_CL236 reg 236
1 1995 MAC 1995-11_CL230 reg 230 (1)
1 1995 MAC 1995-11_CL229J reg 229J
1 1995 MAC 1995-11_CL260 reg 260
我的查询如下
select
id, year, Name, prov, provid
from
Table
for xml path ('entry'), root('legref'), elements
上面的查询为每一行生成不同的条目。但是我需要按ID年份,名称分组,并提供具有不同省份和省份的单项。
<legref>
<entry>
<id>1</id>
<year>1995</year>
<Name>MAC</Name>
<prov>reg 229J</prov>
<provid>NSW_REG_1995-11_CL229J</provid>
</entry>
<entry>
<id>1</id>
<year>1995</year>
<Name>MAC</Name>
<prov>reg 230 (1)</prov>
<provid>NSW_REG_1995-11_CL230</provid>
</entry>
<entry>
<id>1</id>
<year>1995</year>
<Name>MAC</Name>
<prov>reg 236</prov>
<provid>NSW_REG_1995-11_CL236</provid>
</entry>
<entry>
<id>1</id>
<year>1995</year>
<Name>MAC</Name>
<prov>reg 260</prov>
<provid>NSW_REG_1995-11_CL260</provid>
</entry>
</legref>
输出数据:
如何将SQL查询结果转换为XML?
预期结果集:
<legref>
<entry>
<id>1<id>
<year>1995</year>
<Name>MAC</Name>
<prov provID="1995-11_CL230">reg 230 (1)</prov>
<prov provID="1995-11_CL236">reg 236</prov>
<prov provID="1995-11_CL260">reg 260</prov>
<prov provID="1995-11_CL229J">reg 229J</prov>
</entry>
</legref>
答案 0 :(得分:1)
尝试一下
SELECT ID, Year, Name,
(
SELECT ProvID AS 'Prov/@ProvID',Prov
FROM tbl t
WHERE ID = t.ID AND Name = t.Name
FOR XML PATH(''),TYPE
)
FROM tbl
GROUP BY ID, Year, Name
FOR XML PATH ('Entry'),ROOT('legref')
输出
<legref>
<Entry>
<ID>1</ID>
<Year>1995</Year>
<Name>MAC</Name>
<Prov ProvID="1995-11_CL236">Reg 236</Prov>
<Prov ProvID="1995-11_CL230">Reg 230</Prov>
<Prov ProvID="1995-11_CL229J">Reg 229J</Prov>
<Prov ProvID="1995-11_CL260">Reg 260</Prov>
</Entry>
</legref>
答案 1 :(得分:0)