已知
表MCCN_TEST(id,VIPID,MONEYBEGIN,MONEYEND) 几个字段都是 number类型
select (select mccn_vippoint_seq.nextval from dual) id  ,vipid, 
sum(moneyend-moneybegin) moneybegin, 0 
from MCCN_TEST where idn>0 
group by vipid ,moneyend,(select  mccn_vippoint_seq.nextval from dual),0  (select mccn_vippoint_seq.nextval from dual) id 在这里报错:请问我该怎么写??

解决方案 »

  1.   


    SELECT MCCN_VIPPOINT_SEQ.NEXTVAL ID,
           VIPID,
           SUM(MONEYEND - MONEYBEGIN) MONEYBEGIN,
           0
      FROM MCCN_TEST
     WHERE IDN > 0
     GROUP BY VIPID, MONEYENDMCCN_VIPPOINT_SEQ.NEXTVAL, 0;
      

  2.   

    没有描述清除 是执行insert into mccn_test (idn,vipid,moneybegin,moneyend)select (select mccn_vippoint_seq.nextval from dual) id  ,vipid, 
    sum(moneyend-moneybegin) moneybegin, 0 
    from MCCN_TEST where idn>0 
    group by vipid ,moneyend,(select  mccn_vippoint_seq.nextval from dual),0  
    的时候出错。请问我该怎么办?谢谢了。
      

  3.   

    回1楼 报错:ORA-02287:sequence number not allowed here
      

  4.   


    SELECT MCCN_VIPPOINT_SEQ.NEXTVAL ID, VIPID, MONEYBEGIN, TMP
      FROM (SELECT VIPID, SUM(MONEYEND - MONEYBEGIN) MONEYBEGIN, 0 AS TMP
              FROM MCCN_TEST
             WHERE IDN > 0
             GROUP BY VIPID, 0);
      

  5.   

    select mccn_vippoint_seq.nextval from dual where rownum = 1
    因为你那样查出来的话数据库就会默认觉得你的查询结果有多条记录。所以你的编译就不会通过
      

  6.   

    insert into mccn_test
      (idn, vipid, moneybegin, moneyend)
      select mccn_vippoint_seq.nextval, vipid, moneybegin, 0
        from (select vipid, sum(moneyend - moneybegin) moneybegin
                from MCCN_TEST
               where idn > 0
               group by vipid, moneyend)
      

  7.   

    insert into mccn_test
      (idn, vipid, moneybegin, moneyend)
      values(
      select mccn_vippoint_seq.nextval, t.vipid, t.moneybegin, 0
      from (select vipid, nvl(sum(nvl(moneyend,0) - nvl(moneybegin,0)) moneybegin
      from MCCN_TEST
      where idn > 0
      group by vipid, moneyend) t )