我需要查询具有多个 REPORT 标记元素的 Xml 数据。需要对其进行过滤以仅返回 REPORTID 等于给定名称的行。我试图执行这个过滤器,但没有运气。有人可以在这里使用 Sql Server Xml 函数为我指明正确的方向吗?
基本上,我正在寻找我的结果集以表格形式返回,如下所示:
ID
------
1
2
3
鉴于以下情况,我将如何在 REPORTID (/TEST/REPORT/TITLE[@ReportId = "Report One"]) 等于“Report One”的 REPORT 行中选择出来?
DECLARE @Xml XML, @ReportId VARCHAR(200);
SET @ReportId = 'Report One';
SET @Xml = '
<TEST>
<REPORT ReportType="Type One">
<TITLE ReportId="Report One">
<TITLE1>Title One</TITLE1>
</TITLE>
<HEADER>
<Run_Date OrigName="Run Date">4/10/2012</Run_Date>
</HEADER>
<BODY>
<TABLE1>
<DATA />
<ROW>
<ID>1</ID>
</ROW>
<ROW>
<ID>2</ID>
</ROW>
<ROW>
<ID>3</ID>
</ROW>
</TABLE1>
</BODY>
</REPORT>
<REPORT ReportType="Type Two">
<TITLE ReportId="Report Two">
<TITLE1>Title Two</TITLE1>
</TITLE>
<HEADER>
<Run_Date OrigName="Run Date">4/10/2012</Run_Date>
</HEADER>
<BODY>
<TABLE1>
<DATA />
<ROW>
<ID>4</ID>
</ROW>
<ROW>
<ID>5</ID>
</ROW>
<ROW>
<ID>6</ID>
</ROW>
</TABLE1>
</BODY>
</REPORT>
</TEST>';