基于SQL中的父子连接对结果进行排序

时间:2014-05-29 13:41:07

标签: sql sql-server sql-server-2008

我有一张包含以下结构的表格。最后一列parentID显然是与其他行的连接。如果不存在将为0的父级,但不存在第三级层次结构。这意味着如果一行拥有任何父级,则它永远不会拥有任何子级。

ID    |   Test Name    |    ParentID
-------------------------------------
1     |      A         |       0
2     |      B         |       0
3     |      Z         |       2
4     |      L         |       2
5     |      D         |       2
6     |      E         |       0
7     |      Q         |       2
8     |      R         |       6
9     |      S         |       2
10    |      J         |       6
-----------------------------------------------

希望结构清晰。所以我需要一个将返回所有行的查询,但这会根据testname对所有行进行排序,但这也必须保持层次结构。

所以查询的结果应该是

ID    |   Test Name    |    ParentID
-------------------------------------
1     |      A         |       0
2     |      B         |       0
5     |      D         |       2
4     |      L         |       2
7     |      Q         |       2
9     |      S         |       2
3     |      Z         |       2
6     |      E         |       0
10    |      J         |       6
8     |      R         |       6
-----------------------------------------------

1 个答案:

答案 0 :(得分:4)

order by case when ParentID = 0
           then ID
           else ParentID
         end,
         ParentID,
         [Test Name]