wählen Sie einen xml-Typ-Spalte in der select-Abfrage mit group by, SQL Server 2008

Schreibe ich eine select-Abfrage, in der ich bin, Holen mehrere Spalten (durch den Beitritt 3-4 Tische).
Ich verwende group by-Klausel gruppieren meine Ergebnisse.

Abfrage -

    select ci.Candidate_Id, ci.FirstName, ci.DetailXML
from Candidate_Instance ci 
where ci.Candidate_Instance_Id=2
group by 
ci.Candidate_Id, ci.FirstName, ci.DetailXML

Einer der Tabellen eine Spalte mit dem XML-Datentyp. Wenn ich die Spalte in der select-Liste, ich bekomme diese Fehlermeldung -

Spalte 'Tabelle.myXML' ist ungültig in der select-Liste, weil es nicht enthalten ist, entweder in einer Aggregatfunktion oder die GROUP BY-Klausel.

und wenn ich die Spalte in die group by-Klausel, bekomme ich diese Fehler -

Der XML-Datentyp kann nicht verglichen oder sortiert, außer bei der Verwendung von IS NULL-operator.

Ich bin ziemlich verwirrt, wie Sie kommen.
Ich möchte die XML-Daten aus der Spalte.

Dank

Können Sie uns die eigentliche Abfrage und table-Strukturen, so können wir sehen, warum Sie mit GROUP BY überhaupt? Sie sind nicht mit irgendwelchen Aggregaten gibt. Auch kann ein CandidateId haben mehrere verschiedene DetailXML Zeilen?
Martin, meine ursprüngliche Abfrage ist ziemlich lang, und erklären, meine Tabellenstruktur ziemlich unbequem. Ich verstehe Ihren Standpunkt, aber ich kann nicht diskutieren, meine DB-Struktur hier. Ich will einfach nur ein Tipp/trick, um die Dinge in Bewegung.
Wenn candidate_id ist eine primäre Schlüssel innerhalb von candidate_instance das ist ganz einfach: Sie können einen Allgemeinen Tabellenausdruck und sich der cte-Tabelle die Auswahl der XML. Dies ist viel schneller als die acepted Antwort.

InformationsquelleAutor saarthak | 2011-03-07

Schreibe einen Kommentar