1

我有一个列出依赖项的表,但我不知道如何按照图表显示的实际顺序对其进行排序(使用 DB2 SQL)

图(列出组)34 -> 23 -> 65 ->....

目标是按图表的顺序排序

该表有两个字段 GROUP 和 DEPEND。理想的第一列是 34,0(0,因为它不依赖于任何内容),然后是 23,34(依赖于 GROUP 34),然后是 65,23(依赖于 GROUP 23)。遵循 GROUP 的模式,DEPEND。

所以结果如下:

1. 组依赖
 2. 34 0
 3. 23 34
 4. 65 23

是否可以使用变量或其他东西来查看上一条记录的 GROUP 以确定下一行?

非常感谢任何帮助或想法

4

1 回答 1

2

当前版本的 DB2 支持递归查询,因此以下内容应该可以工作(至少它适用于我在 Windows 上的 DB2 9.7 Express-C):

with dep_tree  (groupno, depend, group_order) as (
   select groupno, depend, 1 as group_order
   from group_list
   where depend = 0

   union all 

   select c.groupno, c.depend, p.group_order + 1
   from group_list c, 
        dep_tree p 
   where p.groupno = c.depend
)
select group_order, groupno, depend
from dep_tree
order by group_order;

请注意,我使用groupno而不是GROUP作为列名,因为GROUP是保留字,不应用作列名。

于 2012-12-08T07:00:17.017 回答