例库:
    商品名称    数量    
      a          8       
      a          -1
      b          10
      a          -2
      a          5
      b          12
      b          -5
      b          -3
      a          -3
其中,负数表示出库数量
 现在要求统计出库明细表正常来说  只要数量< 0 即可表是出库
但是要求再加一列  即  剩余结存数量
那么  出库明细表就应该是     商品名称   出库数量  结存数量
       a           -1        7
       a           -2        5
       b           -5        17
       b           -3        14
       a           -3        7

解决方案 »

  1.   

    如果你的表有个增量的ID,一句SQL就可以了
    select a.商品名称,a.数量 as 出库数量 ,(select sum(数量) from 你的表
    where ID <= a.ID and 商品名称=a.商品名称 ) as 结存数量 from 你的表 a where 数量<0如果你的表没有ID,那就建一个临时表或view
    select   identity(int,1,1)   as   ID,*  into 新表 from 你的表然后在新表中用前面的SQL查询以上SQL在SQLSERVER中你的数据测试通过,结果就是你要的
      

  2.   

    select goodscode,sum(outquantity),sum(quantity)
    from
    (
    select goodscode,case when quantity<=0 then quantity else 0 end outquantity,quantity
    from temp_t
    )
    group by goodscode
      

  3.   


    SORRY 我还是没看太懂,我用的是BDE+query在没添加临时结余库存的情况下 
    我是这样写的 
    /////////////////////////////
      query3.Close;
      query3.RequestLive:=true;
      query3.DatabaseName:='';
      query3.SQL.Clear ;
      query3.SQL.Text :='select date1,spmc,shuliang,jhdj,dj,jine from "liushuiw.DBF" where shuliang<0.00'  ;
      query3.Open ;
      /////////////////////////////
    这个就可以取到所有的出库记录了  但是,你上面的2个代码  我不知道该添加到哪里呢 
      

  4.   


    SORRY 我还是没看太懂,我用的是BDE+query在没添加临时结余库存的情况下  
    我是这样写的  
    /////////////////////////////
      query3.Close;
      query3.RequestLive:=true;
      query3.DatabaseName:='';
      query3.SQL.Clear ;
      query3.SQL.Text :='select date1,spmc,shuliang,jhdj,dj,jine from "liushuiw.DBF" where shuliang<0.00' ;
      query3.Open ;
      /////////////////////////////
    这个就可以取到所有的出库记录了   但是,你上面的2个代码 我不知道该添加到哪里呢 
      

  5.   

    怎麼會不行呢?直接利用SQL之CASE語句就可以了:select buyercode,sum(outqty),sum(inqty)
    from
    (
    select buyercode,case when inqty<=0 then inqty else 0 end outqty,inqty
    from Temp
    )
    group by buyercode
      

  6.   


    /*
    create table tablename
    (spname varchar(20),Num integer)
    insert into tablename (spname,num) values('a',8)
    insert into tablename (spname,num) values('a',-1)
    insert into tablename (spname,num) values('b',10)
    insert into tablename (spname,num) values('a',-2)
    insert into tablename (spname,num) values('a',5)
    insert into tablename (spname,num) values('b',12)
    insert into tablename (spname,num) values('b',-5)
    insert into tablename (spname,num) values('b',-3)
    insert into tablename (spname,num) values('a',-3)
    */SELECT a.spname as '商品名称',sum(abs(a.num)) as '数量' ,(select sum(b.num) from tableName b where a.spname=b.spname)as '剩余结存数量' from TableName a where a.num<0 group by spname
      

  7.   

    建议使用三个表:
    1、采购(入库)  
    2、库存
    3、出库建议使用BDE+Table方式,访问表的代码如下:procedure TShowStaffFrm.FormShow(Sender: TObject);
    var  L:integer;
    begin
      L:=0;
      with Table1 do
      begin
        Open;
        First;
        while not Eof do
        begin
          L:=L+1;
          FieldByName('字段名').AsString....
          Next;
        end;
        First;
      end;
    end;
    效果不错。