在我的Access数据库中有两个表,入库表和出库表,我想对入库表中数量这一项加和,对出库表中数量这一项加和,再将这两个和相减,得到剩余数量。这是我入库表中SQL的语句  “SELECT 原料, SUM(数量) FROM 入库信息表 GROUP BY 原料”。请问大家这个应该怎么办?谢谢!!!

解决方案 »

  1.   

    select a.原料,a.数量 - b.数量 from (SELECT 原料, SUM(数量) as 数量 FROM 入库信息表 GROUP BY 原料) a inner join (SELECT 原料, SUM(数量) as 数量 FROM 出库信息表 GROUP BY 原料) b on a.原料 = b.原料不知道ACCESS是否支持这种写法
      

  2.   

    access测试语法正确,不知道是否为你所要的结果呢?
      

  3.   

    你好,谢谢你的回复,但我用的是ADoconnection控件,它一次只能选择一个表,再用一个ADoquery来写SQL语言,我应该怎么用你所说的语句,把它写在哪里
      

  4.   

    如果存在未入库就出库,或者已入库但未出库,用左右连接就有可能漏掉数据
    不确定的情况下可以用full join,也可以用union all,如:select 原料,sum(数量) 数量
    from(select 原料,数量 from 入库信息表
    union all
    select 原料,-数量 from 出库信息表) as X
    group by 原料
      

  5.   


      sql := 'select a.原料,(a.数量 - b.数量) as totol from (SELECT 原料, SUM(数量) as 数量 FROM 入库信息表 GROUP BY 原料) a inner join (SELECT 原料, SUM(数量) as 数量 FROM 出库信息表 GROUP BY 原料) b on a.原料 = b.原料';
      with adoquery do
      begin
        Close;
        sql.clear;
        sql.add(sql);
        Open;
        if not adoquery.eof then 
        begin
          name := trim(adoquery.FieldByName('原料').assstring);
          weight := trim(adoquery.FieldByName('totol).assstring);
        end;
      end;
      

  6.   

    你好,谢谢你的答案,能说的详细点吗,因为我是初学的,对这个不太熟悉。应该用什么控件,以及把SQL语句写在哪里,控件和谁连接。谢谢,谢谢!!