有一张表table1如下
 id  Oid
 1   02
 1   03
 1   05
 2   03
 2   07

合成table2
 id  Oid
 1   02,03,05
 2   03,07

表的数据是会变动的,不能用存储过程和函数,可以用视图实现

解决方案 »

  1.   

    10Gselect id,WMSYS.WM_CONCAT(oid) oid
            from table1
            group by id
      

  2.   

    9I
    select id,substr(max(sys_connect_by_path(oid,',')),2) oid
            from 
               (
                  select a.*,row_number () over(partition by id order by oid) rn
                        from table1
                )
            group by id
            start with rn=1 
            connect by rn-1=prior rn and id=prior id
      

  3.   

    多谢啊
    我也是第一次碰到这样的问题,以前没碰到过~!~!
    请问WMSYS.WM_CONCAT 这个是什么啊,请大哥讲讲:-)认真学习
    还有select a.* 会报a不存在,是怎么回事呀~!~!(*^__^*) 嘻嘻……
      

  4.   

    WMSYS.WM_CONCAT 是10G的一个函数
    select a.* 报错
    是因为
    select a.*,row_number () over(partition by id order by oid) rn
                        from table1
    后面的table1忘记写别名了
    应该是select a.*,row_number () over(partition by id order by oid) rn
                        from table1 a
      

  5.   

    好了,可以了,谢谢了
    不是专门oracle开发的
      这么深的sql还是头一会写:-(
    还得多多的学习啊