采用全月一次加权平均法计算单价,本月结存单价、数量、金额作为下月的期初,如此类推; 
根据不同的查询起始日期和结束日期有不同的结果 
注意:如果是调拨单的调入单价则必须取调出单价    视图:INSTORED 进仓单
仓库    单号    日期        货品    数量  单价  金额   
STORE    BC      BD        GOODS  QTY  PRICE  AM     
原料仓  IN001  2009-07-30  A001    300    20  6000        --7月份 
原料仓  IN002  2009-07-29  B001    400    2   800     
原料仓  IN101  2009-08-01  A001    30    20   600        --8月份 
原料仓  IN103  2009-08-20  A001    50    22  1100    
原料仓  IN203  2009-08-25  A001    20    23   460     
原料仓  IN123  2009-08-26  B001    300    2   600   原料仓  IN123  2009-09-01  A001    500   21  10500      ---9月份进仓 
原料仓  IN125  2009-09-20  B001    500   2.2  1100     半成仓  OU129  2009-09-25  B001    23    0       0      ---此为调拨调入 单号相同 这里没有单价     视图:OUTSTORED 出仓单
原料仓  OU100  2009-08-26  A001    30    0      0      --8月份出仓 
原料仓  OU202  2009-08-27  B001    20    0      0     
原料仓  OU132  2009-08-29  B001    40    0      0    原料仓  OU211  2009-09-08  A001    100    0     0      ---9月份出仓 
原料仓  OU213  2009-09-27  B001    120    0     0     
原料仓  OU129  2009-09-25  B001    23     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.95 2/求把计算出来的当天的发出单价回填到出仓单和进仓单(调拨单)  

解决方案 »

  1.   

    luoyoumou兄,原贴在以下地址,有时间帮忙处理一下,
    http://topic.csdn.net/u/20090917/19/7158B12A-585F-497B-8A01-7AD17A951B14.html
      

  2.   

    --还有:你INSTORED表中以OU开头的单据就一定是调拨单吗?
      

  3.   

    [Quote=引用 24 楼 luoyoumou 的回复:]
    ---2/求把计算出来的当天的发出单价回填到出仓单和进仓单(调拨单)--还有问题:(1)回填:意思是要我更新原表吗?   -----不回填也行,在最终报表能显示就行了 --(2)何谓“当天”的,这个单价到底是按哪个日期来计算
    --是按单据的日期?还是按你输入参数的哪个日期?----是按开始日期和结束日期 计算出
      

  4.   

    仓库调拨单  调出某货品的单价   等于 调入的单价
    半成仓  OU129  2009-09-25  B001    23    0      0  ---此为调拨调入 单号相同 这里没有单价  原料仓  OU129  2009-09-25  B001    23    0    0    ---此为调拨调出 单号相同 
      

  5.   

    ----我查看8月份,得到的是这样的结果,你仔细核对一下是否正确!
    EXEC test_proc '2009-08-01','2009-08-31'
    ------------------------------------------------
    仓库    货品    期初数量 期初单价  期初金额     收入数量  收入单价  收入金额    发出数量  发出单价 发出金额  结存数量  结存单价  结存金额  
    原料仓 A001 300  20.000    6000.000 100   21.600    2160.000 30   20.400   612.000   370 20.400  7548.000
    原料仓 B001 400  2.000    800.000 300   2.000     600.000 60   2.000    120.000   640 2.000  1280.000
      

  6.   


    EXEC test_proc '2009-08-01','2009-08-31'
    ------------------------------------------------
    仓库    货品    期初数量 期初单价  期初金额     收入数量  收入单价  收入金额    发出数量  发出单价 发出金额  结存数量  结存单价  结存金额  
    原料仓 A001 300  20.000    6000.000 100   21.600    2160.000 30   20.400   612.000   370 20.400  7548.000
    原料仓 B001 400  2.000    800.000 300   2.000     600.000 60   2.000    120.000   640 2.000  1280.000
      

  7.   

    以下是正确的内容
    (@FROMDATE DATETIME, @TODATE DATETIME)  ---查询 ('2009-08-01','2009-08-31') 
    仓库 货品编码 期初数量 期初单价 期初金额 收入数量 收入单价 收入金额 发出数量 发出单价 发出金额 结存数量 结存单价 结存金额
    原料仓 A001 300 20 6,000.00 100 21.6 2,160.00 30 20.4 612 370 20.4 7,548.00
    原料仓 B001 400 2 800 300 2 600 60 2 120 640 2 1,280.00(@FROMDATE DATETIME, @TODATE DATETIME)  ---查询 ('2009-0901','2009-08-30) 
    仓库 货品编码 期初数量 期初单价 期初金额 收入数量 收入单价 收入金额 发出数量 发出单价 发出金额 结存数量 结存单价 结存金额
    原料仓 A001 370 20.4 7,548.00 500 21 10,500.00 100 20.745 2,074.48 770 20.745 15,973.52
    原料仓 B001 640 2 1,280.00 500 2.2 1,100.00 143 2.088 298.55 997 2.088 2,081.45

    半成品仓 B001 0 0 0 23 2.088 48.02 0 0 0 23 2.088 48.02
      

  8.   

    你对一下这个就行了,这个正确的了!
    (@FROMDATE DATETIME, @TODATE DATETIME)  ---查询 ('2009-08-01','2009-08-31') 
    仓库 货品编码 期初数量 期初单价 期初金额 收入数量 收入单价 收入金额 发出数量 发出单价 发出金额 结存数量 结存单价 结存金额 
    原料仓 A001 300 20 6,000.00 100 21.6 2,160.00 30 20.4 612 370 20.4 7,548.00 
    原料仓 B001 400 2 800 300 2 600 60 2 120 640 2 1,280.00 (@FROMDATE DATETIME, @TODATE DATETIME)  ---查询 ('2009-0901','2009-08-30) 
    仓库 货品编码 期初数量 期初单价 期初金额 收入数量 收入单价 收入金额 发出数量 发出单价 发出金额 结存数量 结存单价 结存金额 
    原料仓 A001 370 20.4 7,548.00 500 21 10,500.00 100 20.745 2,074.48 770 20.745 15,973.52 
    原料仓 B001 640 2 1,280.00 500 2.2 1,100.00 143 2.088 298.55 997 2.088 2,081.45 半成品仓 B001 0 0 0 23 2.088 48.02 0 0 0 23 2.088 48.02