SQL Server - 按发布父子关系排序

时间:2016-04-15 21:47:17

标签: sql-server sql-order-by

我有一个包含以下字段的数据库表: DocumentID,ParentID,OrderBy

当ParentID不为null时,它与一个DocumentID匹配。 我正在尝试将父文档下的子文档分组,保持OrderBy排序顺序。

例如:

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)。

1 个答案:

答案 0 :(得分: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