Ich habe die folgende CTE-Abfrage und kann nicht herausfinden, warum die Zeilen nicht so wie ich es erwarte bestellt werden. Es bestellt die Staaten dann die Grafschaften. Ich versuche, die korrekte Kind-Grafschaft nach ihrem Eltern-Staat erscheinen zu lassen. So sollte es Alabama, Autauga, Alaska, Aleuten östlich sein.SQL Server CTE-Abfrage sortiert die Zeilen nicht wie erwartet
Was mache ich falsch? Vielen Dank!!
WITH Descendants AS
(
SELECT
p.Page, p.MetaDataID, 0 AS HLevel, p.ParentID, p.OrderNumber
FROM
dbo.MetaData p
WHERE
p.ParentID IS NULL
UNION ALL
SELECT
p.Page, p.MetaDataID, H.HLevel+1, p.ParentID, p.OrderNumber
FROM
dbo.MetaData p
INNER JOIN
Descendants H ON H.MetaDataID = p.ParentID
)
SELECT d.MetaDataID, d.[Page], d.ParentID
FROM Descendants d
ORDER BY d.OrderNumber, d.[Page]
Sie bestellen von d.OrderNumber, eine Spalte, die nicht in der Auswahlliste (und nicht gezeigt ...), wie können Sie sagen, das aktuelle Ergebnis ist in falscher Reihenfolge? – jarlh
Weil 'ORDER BY d.OrderNumber' – vaso123
Sie können 100% sicher sein, dass' order by' korrekt funktioniert. Deine Logik, die Spalte 'OrderNumber' zu bekommen, ist wahrscheinlich falsch. Fügen Sie diese Spalte hinzu, um auszuwählen, was zurückgegeben wird. Vielleicht brauchst du 'h.OrderNumber' und nicht' p.OrderNumber'? –