- 论坛徽章:
- 0
|
请叫高手,递归语句里怎样限定循环次数?
这是db2例子上的,我给你解释一下:
有表
CREATE TABLE PARTLIST
(PART VARCHAR( ,
SUBPART VARCHAR( ,
QUANTITY INTEGER);
PART:部门编号
SUBPART:下级部门编号
AUANTITY:该部门的数量
现在我们只要要层次只深度只到第二层的所有部门的收入,并且算出这个部门所属的层次,
WITH RPL (LEVEL, PART, SUBPART, QUANTITY) AS
(
SELECT 1, ROOT.PART, ROOT.SUBPART, ROOT.QUANTITY
FROM PARTLIST ROOT
WHERE ROOT.PART = '01'
UNION ALL
SELECT PARENT.LEVEL+1, CHILD.PART, CHILD.SUBPART, CHILD.QUANTITY
FROM RPL PARENT, PARTLIST CHILD
WHERE PARENT.SUBPART = CHILD.PART
AND PARENT.LEVEL < 2
)
SELECT PART, LEVEL, SUBPART, QUANTITY
FROM RPL;
结果:
PART LEVEL SUBPART QUANTITY
-------- ----------- -------- -----------
01 1 02 2
01 1 03 3
01 1 04 4
01 1 06 3
02 2 05 7
02 2 06 6
03 2 07 6
04 2 08 10
04 2 09 11
06 2 12 10
06 2 13 10
分析,
起到限制层次的字段就是:
PAL(LEVEL) 这个字段
在SQL语句的UION ALL 后面的PARENT.LEVEL+1中就是开始计算层次
这样你在后面where 中加上限制PARENT.LEVEL<N
N就是你的层次了哦
哈,,祝工作愉快哦! |
|