DB2SQL递归写法

with t1 (A,B,NUM) as (
select A,B,row_number() over (partition by A order by id) from 
(VALUES
( '1' , '1' ,'a'),
( '2' , '2' ,'b'),
( '3' , '1' ,'c'),
( '4' , '1' ,'d'),
( '5' , '3' ,'e'),
( '6' , '3' ,'f')
) AS mytest(id,A,B)
),
t2(RA,RB,NUM) as (
select A,char(B,10),NUM from t1 where num = 1
union all 
select t2.RA,rtrim(t2.rb) ||','||t1.B ,t1.num from t1,t2 where t1.num = t2.num+1 
and t1.A = t2.RA
)
select RA,RB from t2 
where NUM = (select Max(NUM) from t2 temp where temp.RA = t2.RA) order by RA
 输出结果:
RA     RB
1        a,c,d     
2        b         
3        e,f      
 
树的递归查询:
WITH TEMP(PARENTID,ID,NAME) AS
(
SELECT PARENTID,ID,NAME FROM BBS WHERE NAME= 'DB2'
UNION ALL
SELECT B.PARENTID,B.ID,B.NAME FROM BBS AS B, TEMP AS T WHERE B.PARENTID=T.ID
)
SELECT * FROM TEMP;--- 语句 4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值