DB2行转成列例子

 create table tb_list(
   id int not null,
   cname varchar(20)
   );

insert into tb_list values(1,'张三');
insert into tb_list values(2,'李四');
insert into tb_list values(3,'王五');
insert into tb_list values(4,'赵六');
insert into tb_list values(5,'赵六');
insert into tb_list values(1,'陈七');


with cname1(cname,p_rownum,n_rownum) as (
      select cname,rownumber() over(order by id) as p_rownum,rownumber() over(order by id)+1 as n_rownum
       from tb_list
    ),
   cname2(cname,p_rownum,n_rownum) as (
     select cast(t1.cname as varchar(1000)),p_rownum,n_rownum
      from cname1 t1
      where p_rownum=1
     union all
     select t1.cname||'|'||t2.cname,t2.n_rownum,t2.n_rownum+1
      from cname1 t1,cname2 t2
      where t1.p_rownum=t2.n_rownum
    )
   select cname
     from cname2 a
     where n_rownum=(select max(n_rownum) from cname1);

 

最有一句是DB2标准的递归写法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值