Sql Server版本的股票估值查询

Sql Server版本的股票估值查询,sql,database,sql-server-2008-r2,Sql,Database,Sql Server 2008 R2,我想计算股票的平均价格,得到下面的解 这个查询看起来很棒,因为它正是我所需要的 但我使用的是SQLServer2008。此查询的Sql Server版本是什么 计算公式为 旧库存x旧单价+新采购数量x新单价/旧库存数量+新采购数量 记录是 TrancDate ProID Qty CostRate TrancType closingStock closingCostRate 02/06/2013 1 10.000 2.00 P

我想计算股票的平均价格,得到下面的解

这个查询看起来很棒,因为它正是我所需要的

但我使用的是SQLServer2008。此查询的Sql Server版本是什么

计算公式为 旧库存x旧单价+新采购数量x新单价/旧库存数量+新采购数量 记录是

TrancDate   ProID   Qty CostRate    TrancType  closingStock    closingCostRate
02/06/2013  1   10.000  2.00               P             10                2
02/08/2013  1   7.000   0.00               S             3                 2
02/15/2013  1   15.000  3.00               P             18                2.83
02/16/2013  1   8.000   0.00               S             10                2.83
02/25/2013  1   20.000  4.00               P             30                3.61 
02/26/2013  1   9.000   0.00               S             21                3.61
02/26/2013  1   1.000   0.00               S             20                3.61

如果计算结果是我认为的:

select t.*, cumetot / cumeqty
from (select t.*,
             (select SUM(qty)
              from t t2
              where t2.tranctype = 'P' and t2.proid = t.proid and t2.trancdate <= t.trancdate
             ) as cumeqty,
             (select SUM(qty*ClosingCostRate)
              from t t2
              where t2.TrancType = 'P' and t2.proid = t.proid and t2.trancdate <= t.trancdate
             ) as cumetot
      from t
     ) t

SQL Server 2012具有累积总和和计数,但不具有2008。

能否提供具有所需结果的示例记录?trunc实际上与将浮点转换为整数相同。decode是case构造的函数版本。您还不清楚的任何其他部分?@DanBracuk:可能是模型部分?有关示例记录,请检查更新的问题,这样我就不需要使用分区依据?@user1115284。我看不出这有什么帮助。SQLServer2008没有累计总和,这就是运行平均数所需的。相关子查询执行相同的操作t2.proid=t.proid相当于窗口函数的分区部分。它可能没有那么有效,但它可以工作。好的,谢谢,那么指定TrancType怎么样,因为平均利率应该只在发生购买时计算。其他情况下,所有其他交易销售应使用通过购买计算的最新平均利率。当然还有每笔交易后剩余的存货,包括出售和出售purchase@user1115284 . . . 在查询中包含示例数据和结果确实是一个好主意。也许这就是你想要的。是的,同样的计算公式。请看编辑后的问题