2016-04-15 23 views
0

並び順は、私は、次のフィールドを持つデータベーステーブルを持っています。 親ドキュメントの下に子ドキュメントをグループ化しようとしていますが、OrderByソート順を維持しています。例えばSQL Serverの問題の親子関係

DocumentID ParentID OrderBy 
    36  null  3 
    167  75  4 
    60  null  8 
    75  null  7 

正しい順序は次のようになります。

3, 7, 4, 8 

P.S:私はWITHステートメントを使用することはできません。私のクライアントは古いバージョンのSQL Server(2000)を使用しています。

+0

階層がどのように多くのレベルの深行くんですか?複数の行が存在しない場合(つまり、与えられた行が 'NULL' ParentIDを持つか、行を指している場合)、' coalesce(ParentID、DocumentID) 'でソートすることができます。 –

答えて

0

これを試すことができますか... 親のOrderBy値が存在する場合は値を取得し、それがある場合はそれを取得し、それ以外の場合は値順にソートします。私が覚えている限りでは、このすべては、有効なSQL 2000構文

SELECTa.* 
FROM YourTable a 
ORDER BY ISNULL(
    (SELECT OrderBy 
    FROM YourTable b 
    WHERE a.ParentId = b.DocumentId), 
a.OrderBy), a.ParentId 

結果

DocumentId ParentId OrderBy 
36   NULL  3 
75   NULL  7 
167   75  4 
60   NULL  8 
+0

魅力的な作品!どうもありがとうございます!!! – user5141036