期末结存=期初结存+本期收-本期出
期初结存=(上期)期末结存
---------可以推出下面公式:
期初结存=期末结存+本期出-本期收select 期间,[期初结存]=期末结存+本期出-本期收,本期收,本期出,期末结存 from v_1说明:在统计进销存库存一块,本期出、本期收和期末结存是可以直接查到.

解决方案 »

  1.   

    是啊,大哥,毕竟是先有期初和期末是因为关系啊,没有因哪来果啊
    期间   期初结存  本期收   本期出   期末结存
     5      554.00     Null     NUll      Null
     6      554.00    35.00    178.00    411.00
     7      411.00    74.00    119.00    366.00
     8      366.00    7.00      58.00    315.00 
    如果这样,是不是会更容易些,关键是在计算的时候,如何才能把NUll值变成0,谢谢各位帮忙~
      

  2.   

    是啊,大哥,毕竟是先有期初,然后才知道期末,它们是因果关系啊,没有因哪来果啊期间   期初结存  本期收   本期出   期末结存
     5      554.00     Null     NUll      Null
     6      554.00    35.00    178.00    411.00
     7      411.00    74.00    119.00    366.00
     8      366.00    7.00      58.00    315.00 
    如果这样,是不是会更容易些,关键是在计算的时候,如何才能把NUll值变成0,谢谢各位帮忙~
      

  3.   

    如果这样,是不是会更容易些,关键是在计算的时候,如何才能把NUll值变成0,谢谢各位帮忙~
    ----------isnull(本期出,0)
      

  4.   

    --测试数据
    create table ta(期间 int, 期初结存 real,
     本期收 real, 本期出 real, 期末结存 real)
    go
    insert ta select 6, 554.00, 35.00, 178.00, 411.00
    union all select 7, 554.00, 74.00, 119.00, 509.00
    union all select 8, 554.00, 7.00 , 58.00,  503.00
    --查询
    select 期间
          ,期初结存=isnull((select max(期初结存)+sum(本期收)-sum(本期出) from ta as t2 where t2.期间<t1.期间), 期初结存)
          ,本期收
          ,本期出
          ,期末结存=(select max(期初结存)+sum(本期收)-sum(本期出) from ta as t2 where t2.期间<=t1.期间)
    from ta as t1
    --清除
    drop table ta