SQL中基于父子连接的排序结果
我有一张有如下结构的桌子。最后一列parentID显然是与另一行的连接。如果不存在父级,则将为0。但不会有第三层次。这意味着,如果一行有任何父行,它将永远不会容纳任何子行SQL中基于父子连接的排序结果,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一张有如下结构的桌子。最后一列parentID显然是与另一行的连接。如果不存在父级,则将为0。但不会有第三层次。这意味着,如果一行有任何父行,它将永远不会容纳任何子行 ID | Test Name | ParentID ------------------------------------- 1 | A | 0 2 | B | 0 3 | Z
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
-----------------------------------------------
order by case when ParentID = 0
then ID
else ParentID
end,
ParentID,
[Test Name]