IT分销/经销数据库

DB2要达到下面的结果怎么写?

我的表结构和数据,
cl1 cl2
a 100   
a 150
a 200
b 100
b 150
c 100

我想要下面的结果怎么做?
cl1 cl2
a 100,150,20
b 100,150
c 100

我需要用存储过程实现     需要用FOR 循环做
参与9

8同行回答

qingduo04qingduo04系统架构师华为
思想真好,学习了!显示全部
思想真好,学习了!收起
系统集成 · 2011-03-25
浏览929
weiruan85weiruan85数据库管理员ibm
A1           1 01A1           1 02A1           1 03A2           1 01A2     ...显示全部
A1           1 01
A1           1 02
A1           1 03
A2           1 01
A2           2 01
A2           2 02

-- drop table test1 ;
--  create table test1
--  (
--    t1 varchar(100),
--    t2 int,
--    t3 varchar(100)
--  ) ;
--  
--  insert into test1
--  values
-- ('A1', 1 ,'01'),('A1' ,1, '02'),('A1', 1, '03'),
-- ('A2', 1, '01'),('A2', 2, '01'),('A2', 2 ,'02') ;

with x (t1,t2,cnt,list,t3,len)
as (select t1,t2,count(*) over (partition by t1,t2),cast(t3 as varchar(100)),t3,1 from  test1
    union all
    select x.t1,x.t2,x.cnt,x.list||','||e.t3,e.t3,x.len+1
    from test1 e,x where e.t1=x.t1 and e.t2=x.t2 and e.t3>x.t3
   )
select t1,t2,list   from x where len=cnt;


--    create table recursion
--    (
--       id int ,
--           action varchar(100)
--    );
--
-- delete from recursion ;
--    insert into recursion values(1,'a');
--    insert into recursion values(1,'b');
--    insert into recursion values(2,'c');
--    insert into recursion values(2,'d');
   
--    insert into recursion values(1,'e');
--    insert into recursion values(2,'f');


   with x(id,action,t1,t2) as
   (
          select id,action ,t1,t2 from  (select id ,action ,rownumber()over(partition by id) t1 ,rownumber()over(partition by id) t2 from  recursion ) a   
          where t1=1 and t2=1
          union all
          select x.id,x.action||'-'||b.action,x.t1+1,x.t2
          from   x , (select id ,action ,rownumber()over(partition by id) t1 ,rownumber()over(partition by id) t2 from  recursion ) b  where b.id=x.id   and x.t1=b.t2-1
    )
        select  *  from x  where t1=3;收起
政府机关 · 2011-03-21
浏览930
回复 6# IBMER_JAY 这个问题本人也遇见过!已解决http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1010liush/index.html显示全部
2011-03-21
浏览891
IBMER_JAYIBMER_JAY数据库管理员IBM
其实就是对with as的灵活运用显示全部
其实就是对with as的灵活运用收起
互联网服务 · 2011-03-21
浏览887
limin19821limin19821系统工程师乐酷天
用left join 关联相同的表zouhuiqun 发表于 2011-3-21 10:52 这样恐怕不中吧,关键不知道要left join几次啊显示全部
用left join 关联相同的表
zouhuiqun 发表于 2011-3-21 10:52

这样恐怕不中吧,关键不知道要left join几次啊收起
IT分销/经销 · 2011-03-21
浏览910
zouhuiqunzouhuiqun系统工程师北京宇信
用left join 关联相同的表显示全部
用left join 关联相同的表收起
金融其它 · 2011-03-21
浏览881
gudaguda数据仓库工程师广州
递归呗,代码要花点心思写一下的啦显示全部
递归呗,代码要花点心思写一下的啦收起
互联网服务 · 2011-03-21
浏览905
limin19821limin19821系统工程师乐酷天
用递归可以,http://www.db2china.net/home/space.php?uid=16546&do=blog&id=9053显示全部
IT分销/经销 · 2011-03-21
浏览892

提问者

liujialong
系统工程师

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2011-03-21
  • 关注会员:1 人
  • 问题浏览:5130
  • 最近回答:2011-03-25
  • X社区推广