IPCD     ……         IPFG
100                     1
103                     0
109                     1
……表如上,现在我现在想复制一条数据,当IPFG=1时直接复制,这个我搞定了
当IPFG=0的时候要找到IPCD的最大值,然后加一再复制
上面数据库就变成
IPCD     ……         IPFG
100                     1
103                     0
109                     1
100                     1
110                     1
请问SQL语句怎么写?我用的库是IBM的小型机AS400。

解决方案 »

  1.   

    select distinct * from table where IPFG=0 order by IPCD desc
    得出IPFG=0时的IPCD的最大值了
      

  2.   

    看你的意思是如果IPFG上有0出现的行,那么就会出现一个新的行,而这个新行的数据是:
    IPCD是整个这一列的最大值,IPFG是1;对吧
    我觉的用存储过程好点;sql语句如下:找到该列的最大值:select max(IPDC) into :MaxValue from tab;
    找到当IPFG=0的时候要加在行数:select count(*) into :iCount from tab where IPFG=0;
    然后用个循环,循环插入值就ok啦
    do while i <= iCount
    insert into tab values(MaxValue,1);
    MaxValue = MaxValue +1; //保证即时出现的列IPCD中的最大值或者用:
                            //select max(IPDC) into :MaxValue from tab
    i=i+1;
    loop
      

  3.   

    inset into a(IPCD,IPFG)
    select ipcd,ipfg from 
    (select IPCD,IPFG from a where a.IPFG=0
    union
    select max(IPCD) IPCD,IPFG from a where a.ipfh=1 group by ipcd) AA
      

  4.   

    select max(IPDC)+1 into :MaxValue IPFG into :MyIPFG from tab where IPFG=0inset into a(IPCD,IPFG) values(:MaxValue,:MyIPFG )