1我觉得是table1 join table2造成的//不知你用的什么数据库
我觉得应该是这样
select table2.Code, table2.Name, sum(table1.money), sum(table2.money), (sum(table1.money)-sum(table2.money))/sum(table2.money)
from table1,table2 where table1.code(+)=table2.code
group by table2.Code
//table1.code(+)=table2.code是外部查询,就是2的解决,不知道你的数据
库是否支持

解决方案 »

  1.   

    我是在delphi里用sql
    好像不支持(+)=我用join on和where试过了,没有差别
      

  2.   

    一般情况下不要用table1.code=table2.code这样写法,因为这样写是对两 个表做笛卡尔积,如果 table1 有100条记录,table2 有100条记录,笛卡尔积的操作就是  100*100=10000 特别是在数据量很多大的情况下,速度会很慢。
     可改为用IN 或Exists方式操作。

    select *
    from table1
    where code in
     (select code
      from table2)
     这样就快很多。
      

  3.   

    color99(木头人) ,谢谢建议不过用你的方法,还是会出现重复计算,而且好像次数还增加了
    看看我的程序是不是有问题
    select table1.Code, table1.Name, sum(table1.money), sum(table2.money), 
    (sum(table1.money)-sum(table2.money))/sumtable2.money)
    from table1  inner join table2 on table1.code in (select code from table2)
    group by table1.Code, table1.Name