Ich muss XML-Daten abfragen, die mehrere REPORT-Tag-Elemente enthält. Es muss gefiltert werden, um nur die Zeilen zurückzugeben, in denen die REPORTID einem gegebenen Namen entspricht. Ich habe versucht, diesen Filter ohne Glück durchzuführen. Könnte mir jemand hier mit den SQL Server Xml Funktionen in die richtige Richtung zeigen?Sql Server Xml zu Tabellenlogik
Grundsätzlich suche ich meine Ergebnismenge als Tisch zurückzukehren und wie folgt aussehen:
ID
------
1
2
3
folgenden gegeben, wie würde ich auf die Zeilen für den Bericht auswählen, wo die ReportID (/ TEST/REPORT/TITLE [@ReportId = "Bericht Eins"]) ist gleich "Bericht Eins"?
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>';
Vielen Dank, ich hatte gerade angefangen, mit Kreuzknoten zu spielen. Ich habe gerade diesen Artikel gefunden, der mir geholfen hat, ihn ein wenig zu verstehen: http://blogs.msdn.com/b/simonince/archive/2009/04/24/flattening-xml-data-in-sql-server.aspx – mservidio