通过HierarchyId排序,但首先是父级

时间:2015-03-27 16:33:44

标签: sql hierarchy hierarchyid

在我们的一个数据库中,我们使用HierarchyId列。然后我们从表中选择行:

SELECT HierarchyId.ToString()
FROM   Tree
ORDER BY HierarchyId DESC

这是一个很好的层次结构,但是所有的节点都按照相反的顺序排列:

1/13/
1/12/123/
1/12/122/
1/12/121/
1/12/
1/11/
1/

但是我们希望节点按此顺序保留,但父节点上方的父节点如下:

1/
1/13/
1/12/
1/12/123/
1/12/122/
1/12/121/
1/11/

我能想到的唯一解决方案是递归CTE,它会否定使用HierarchyId的许多好处。有没有人对如何做到这一点有任何想法?

谢谢,

1 个答案:

答案 0 :(得分:0)

你可以试试这个,希望它会起作用。

SELECT HierarchyId.ToString()
FROM   Tree
ORDER BY cast(HierarchyId as nvarchar(100)) DESC