请教各位有没有全月平均法算单价的实例?
 上月结存单价作为本月期初单价再进行计算

解决方案 »

  1.   

      create   table   库存表   
        
      (   
        商品类别       varchar(50),   
        商品名称       varchar(50),   
        商品规格       varchar(50),   
        数量               int,   
        单价               int,   
        库存标志       char(10)   
          
      )   
        
      insert   into   库存表   select   'a','a1','111',10,100,'入库'   
      insert   into   库存表   select   'a','a1','111',10,100,'入库'   
      insert   into   库存表   select   'a','a1','111',20,100,'入库'   
      --------------------------------------   
      declare   @num   int   
      set   @num=5                       ---此次出库数量5   
      insert   into   库存表     
      select   商品类别,商品名称,商品规格,@num   
      ,sum((case   when   库存标志='入库'   then   数量   else   0   end)*单价)/sum(   case   when   库存标志='入库'   then   数量   when   库存标志='出库'   then   -数量   end)   as   價格     
      ,'出库'   from   库存表     
      group   by   商品类别,商品名称,商品规格   
        
      ---------------------------------------   
      select   *   from   库存表   
        
      商品类别   商品名称     商品规格     数量         单价             库存标志   
      ------------------------------------------------------------   
      a a1 111 10 100 入库               
      a a1 111 10 100 入库               
      a a1 111 20 100 入库               
      a a1 111 5 100 出库           
        
      --如果再出库10的话:       
      declare   @num   int   
      set   @num=10                     ---再出库数量10   
      insert   into   库存表     
      select   商品类别,商品名称,商品规格,@num   
      ,sum((case   when   库存标志='入库'   then   数量   else   0   end)*单价)/sum(   case   when   库存标志='入库'   then   数量   when   库存标志='出库'   then   -数量   end)   as   價格     
      ,'出库'   from   库存表     
      group   by   商品类别,商品名称,商品规格   
      ----   
      select   *   from   库存表   
        
      商品类别   商品名称     商品规格     数量         单价             库存标志   
      ------------------------------------------------------------   
      a a1 111 10 100 入库               
      a a1 111 10 100 入库               
      a a1 111 20 100 入库               
      a a1 111 5 100 出库               
      a a1 111 10 114 出库       
    来源:http://topic.csdn.net/t/20060916/15/5026599.html
      

  2.   

    --库存先进先出简单例子:create table t(
    id int identity(1,1),
    name varchar(50),--商品名称
    j int,        --入库数量
    c int,        --出库数量
    jdate datetime --入库时间
    )
    insert into t(name,j,c,jdate) select  'A',100,0,'2007-12-01'
    insert into t(name,j,c,jdate) select  'A',200,0,'2008-01-07'
    insert into t(name,j,c,jdate) select  'B',320,0,'2007-12-21'
    insert into t(name,j,c,jdate) select  'A',100,0,'2008-01-15'
    insert into t(name,j,c,jdate) select  'B',90,0,'2008-02-03'
    insert into t(name,j,c,jdate) select  'A',460,0,'2008-02-01'
    insert into t(name,j,c,jdate) select  'A',510,0,'2008-03-01'
    gocreate proc wsp
    @name varchar(50),--商品名称
    @cost int         --销售量
    as
    --先得出该货物的库存是否够
    declare @spare float --剩余库存
    select @spare=sum(j)-sum(c) from t where name=@name 
    if(@spare>=@cost)
    begin
        --根据入库日期采用先进先出原则对货物的库存进行处理
        update t set c=
        case when (select @cost-isnull(sum(j),0)+isnull(sum(c),0) from t where name=@name and jdate<=a.jdate and j!=c)>=0
        then a.j 
        else 
            case when (select @cost-isnull(sum(j),0)+isnull(sum(c),0) from t where name=@name and jdate<a.jdate and j!=c)<0 then 0 
            else (select @cost-isnull(sum(j),0)+isnull(sum(c),0)+a.c from t where name=@name and jdate<a.jdate and j!=c) 
            end 
        end
        from t a where name=@name and j!=c 
    end
    else
        raiserror('库存不足',16,1)    
        return 
    go
    --测试:exec wsp @name='A',@cost=180
    select * from t
    --drop table t
    --drop proc wsp
      

  3.   

    表IO_STORE ----出入库明细  ISIND=1为进仓单  ;  ISIND=0为出仓单 
    采用全月一次加权平均法计算单价,本月结存单价、数量、金额作为下月的期初,如此类推;
    根据不同的查询起始日期和结束日期有不同的结果
    注意:如果是调拨单的调入单价则必须取调出单价
    仓库     单号     日期        货品    数量   单价  金额  进/出仓
    STORE     BC       BD         GOODS   QTY   PRICE   AM    ISIN
    原料仓   IN001   2009-07-30   A001    300    20    6000     1    --7月份
    原料仓   IN002   2009-07-29   B001    400    2      800     1
    原料仓   IN101   2009-08-01   A001    30     20     600     1    --8月份
    原料仓   IN103   2009-08-20   A001    50     22    1100     1
    原料仓   IN203   2009-08-25   A001    20     23     460     1
    原料仓   IN123   2009-08-26   B001    300    2      600     1原料仓   OU100   2009-08-26   A001    30     0        0     0   --8月份出仓
    原料仓   OU202   2009-08-27   B001    20     0        0     0
    原料仓   OU132   2009-08-29   B001    40     0        0     0 原料仓   IN123   2009-09-01   A001    500    21   10500     1  ---9月份进仓
    原料仓   IN125   2009-09-20   B001    500    2.2   1100     1
    半成仓   OU129   2009-09-25   B001    23     0        0     1  ---此为调拨单 单号相同 这里没有单价原料仓   OU211   2009-09-08   A001    100    0        0     0  ---9月份出仓
    原料仓   OU213   2009-09-27   B001    120    0        0     0
    原料仓   OU129   2009-09-25   B001    23     0        0     0  ---此为调拨单 单号相同
    求结果如下有2点:
    1/第一种方案  (希望能做成函数)
     (@FROMDATE DATETIME, @TODATE DATETIME)  ---查询 ('2009-08-01','2009-08-31')
    仓库     货品   期初数量 期初单价 期初金额  收入数量  收入单价  收入金额  发出数量 发出单价 发出金额  结存数量 结存单价  结存金额
    STORE    GOODS    SQT      SPRICE   SAM       IQT       IPRICE   IAM        OQT     OPRICE   OAM       EQT       EPRICE    EAM
    原料仓  A001  300    20   6,000.00   100 21.6 2,160.00    70      20.4    1,428.00   330  20.4 6,732.00
    原料仓  B001  400    2   800      300 2 600     20      2       40       680  2 1,360.00 (@FROMDATE DATETIME, @TODATE DATETIME)  ---查询 ('2009-09-01','2009-08-30')
    仓库     货品   期初数量 期初单价 期初金额  收入数量  收入单价  收入金额  发出数量 发出单价 发出金额  结存数量 结存单价  结存金额
    STORE    GOODS    SQT      SPRICE   SAM       IQT       IPRICE   IAM        OQT     OPRICE   OAM       EQT       EPRICE    EAM
    原料仓  A001  330    20.4   6,732.00    500 21 10,500.00   100    20.761   2,076.14   730 20.761  15,155.86
    原料仓  B001  680    2   1,360.00    500 2.2 1,100.00    143    2.085    298.12    1,037 2.085  2,161.88半成仓  B001  0    0      0       23 2.085 47.95      0      0       0        23  2.085   47.952/求把计算出来的当天的发出单价回填到出仓单和进仓单(调拨单)   ISIND=0为出仓单有不明白的可以马上提出来,下午一直在线!!
      

  4.   

    一、在核算成本时,不需要把商品调拨单来参与成本的核算,因为商品调拨单有一入和一出,相互已经抵消了。另外,在计算成本核算时,要把盘点单的单价、采购退货的单价参与成本核算,否则会不对的。二、在做月平均成本核算时,一定要把上期的期末结存的数量和金额在参与本期来计算sql语句就不写了,方法就这样做