begin
CREATE TABLE t1
(a NUMBER,
b NUMBER)
/
CREATE TABLE t2
(a NUMBER,
c NUMBER)
/
insert into t1(a,b)
values(1,10);
insert into t1(a,b)
values(1,11);
insert into t1(a,b)
values(2,20);
insert into t1(a,b)
values(2,22);
/
insert into t2(a,c)
values(1,4);
insert into t2(a,c)
values(1,5);
insert into t2(a,c)
values(2,5);
insert into t2(a,c)
values(2,6);
insert into t2(a,c)
values(2,7);
/
select a, sum(b) - (select sum(c) from t2 where a = t1.a) as b from t1 group by a
/*结果:
A  B
1  12
2  24
*/

解决方案 »

  1.   

    这样的话,可能是楼主ORACLE的版本低了吧
      

  2.   

    to zonelive(peter) 不行呀,结果如下:SQL> select a, sum(b) - (select sum(c) from t2 where a = t1.a) as b from t1 group by a;
    select a, sum(b) - (select sum(c) from t2 where a = t1.a) as b from t1 group by a
                               *
    ERROR 位于第 1 行:
    ORA-00979: 不是 GROUP BY 表达式
      

  3.   

    楼主不用急,你用的ORACLE是什么版本的,还有把你的逻辑和要求说一下,应该可以有其它方法代替的
      

  4.   

    我的版本是8.16,逻辑就是zonelive(peter) 所说的。我经常用mssql和sysbase,到处都是这样的语句,不知道到了oracle就不行了。
      

  5.   

    我同学试过了9i可以呀
    但是我要在8.16下运行,oracle不会这么傻吧
      

  6.   

    select a, sum( b ) - (select 10 from dual) as b from t1 group by a; 这样都不行。
      

  7.   

    子查询作为列(selection list)oracle称为 scalar subquery(标量子查询)
    子查询作为表(from list)     oracle称为 inline-view
    8I的过程不支持,但过程外支持;9I可以
      

  8.   

    select t1.a, t1.b - t2.c from 
    (select a, sum( b ) as b from t1 group by a) t1,
    (select a, sum( c ) as c from t2 group by a) t2 where t1.a = t2.a;这样可以了
    oracle太弱智了,到了9i才改善。