思路insert into 目标表 as select 'X',decode(rownum,1,decode(b,1,c,0),0),decode(rownum,1,decode(b,1,d,0),0),decode(rownum,2,decode(b,1,c,0),0)…… from 原表 where a='X'insert into 目标表 as select 'Y',decode(rownum,1,decode(b,1,c,0),0),decode(rownum,1,decode(b,1,d,0),0),decode(rownum,2,decode(b,1,c,0),0)…… from 原表 where a='Y'没有测试可能有语法错误,你改改看

解决方案 »

  1.   

    I am afraid it can't do
      

  2.   

    是这样的,数据库中的表有两个主键,其中一个是另一个表的外键,另外一个表示级别。
    现在想要以前一个主键为主键(唯一)建立一个新表,这样新表的列数肯定会增加,为了区分原表中重复的列名,根据第二个主键(1~5),为每一个列重新命名(在后面加一个数字(1~5))。
    第二个主键的值是从小到大,连续的(不存在 1、2、5这种情况)。
    可以存在一些值为空的列(例如:对应第一个主键 A,存在3条数据,第二个主键分别为1 、2、 3,而不存在为 4 或者 5 得数据,那么 列 D4、D5中的数据就为空)问题是如何用一条语句构造出新的表,我想这是一个自连接的问题,但是如何根据第二个主键来把每个列的值归到新表中对应的列呢?
      

  3.   

    看不懂大哥
    oracle存储函数中
    dyndql:='select var,a.aaa from aaa a'
    变量var如何引用,谁知道,帮帮忙,谢谢了
    Vdyndql:='select var,a.aaa from aaa a'
    Execute immediate Vdynsql using var;
    这样为什么不行???
      

  4.   

    对,就是把原有的两个主键的表,变成一个主键的表,这样相应的列格数目就会增多.我遇到的难题就是怎样根据一个主键把数据相应的放到对应的列里面去.我不熟悉oracle的说,不知道有没有类似的函数,或者那位高手能用sql做到,在下感激不尽!