2017-12-11 8 views
-1

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!!

Table

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] 

enter image description here

+3

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

+1

Weil 'ORDER BY d.OrderNumber' – vaso123

+2

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'? –

Antwort

-1

Entschied die Abfrage nicht als Eltern/Kind aufzubauen. Danke für die Hilfe

Verwandte Themen