来自父母和孩子的Concat值对项目进行排序

时间:2014-10-03 14:00:42

标签: sql sql-server recursion

我有一张桌子指着自己:

ID, varchar
PARENTID, varchar

对于顶级项目,PARENTID是一个空字符串。 对于所有孩子,PARENTID指向一个ID。

还有另一个表格,其中包含一些排序选项:

ITEMID, varchar
SORT, varchar

ITEMID对应于另一个表中的ID。 SORT是一种排序值,范围从 0001'到' 9999'。

我需要根据这些标准进行一些排序:

  • 父母应始终将其子女直接置于其下方
  • 同一级别的项目应根据各自的SORT
  • 进行排序

所以我的想法是将一个孩子的SORT值连接到它的父节点,如下所示: CHILDSORT = GRANDPARENTSORT_PARENTSORT_SORT

从一个孩子开始,我如何在他们的各种各样的情况下一直冒泡到它的祖先(没有父母的那个)?

1 个答案:

答案 0 :(得分:0)

使用Recursive CTE获取派生表,并包含您可能要排序的任何列,以便您可以在外部查询中对这些列进行ORDER BY。