我有一个列出依赖关系的表,我无法弄清楚如何按照显示图表的实际顺序对其进行排序(使用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以确定下一行?
非常感谢任何帮助或想法
答案 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
是保留字,不应用作列名。