根据以前的值拉出排序的下一行

时间:2012-12-08 06:44:14

标签: sql db2

我有一个列出依赖关系的表,我无法弄清楚如何按照显示图表的实际顺序对其进行排序(使用DB2 SQL)

图表(列出GROUP) 34 - > 23 - > 65 - > ....

目标是按照图表的顺序排序

表格有两个字段GROUP和DEPEND。理想的第一列是34,0(0,因为它取决于任何东西),然后是23,34(取决于GROUP 34),接着是65,23(取决于第23组)。遵循GROUP,DEPEND。

的模式

所以结果如下:

 1. GROUP   DEPEND
 2. 34      0
 3. 23      34
 4. 65      23

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

非常感谢任何帮助或想法

1 个答案:

答案 0 :(得分: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是保留字,不应用作列名。