2017-12-11 2 views
-1

次のCTEクエリがあり、期待どおりに行が順序付けられていない理由がわかりません。それは州とその郡を発注しています。私は親の状態の後に正しい子供の郡が現れるようにしようとしています。だからそれはAlabama、Autauga、Alaska、Aleutians Eastでなければなりません。SQL ServerのCTEクエリで期待通りに行が順序付けされていません

私は間違っていますか?ありがとう!!

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

d.OrderNumber(選択リストにないコラム...と表示されています)では、現在の結果が間違った順序であることをどのように伝えることができますか? – jarlh

+1

'ORDER BY d.OrderNumber' – vaso123

+2

あなたは' order by'が正しく動作することを100%確信できます。列「OrderNumber」を取得するロジックが間違っている可能性があります。その列を追加して、返される内容を選択します。たぶん、 'p.OrderNumber'ではなく' h.OrderNumber'が必要でしょうか? –

答えて

-1

親/子としてクエリを作成しないことを決定しました。ヘルプありがとう

関連する問題