我一直在建立一个计算“滚动4个月”的销售数据的访问查询。我一直在尝试使用DSUM,但我似乎只能获得特定组的小计或运行总计(而不是移动总计)。我试图说明我在下面尝试做什么。
Date Product Value Rolling_4_Month_Sum
January A 100 100
February A 200 300
March A 300 600
April A 300 900
May A 200 1000
June A 400 1200
July A 500 1400
August A 700 1800
是否可以仅运行4行/月的运行总计?
谢谢!
祝你好运, 菲利普
答案 0 :(得分:1)
SELECT
a.Date,
a.Product,
a.Value,
SUM(b.value)
FROM
Table a
INNER JOIN Table b ON a.Product=b.Product
AND b.Date <= a.Date
AND b.Date >= DateAdd("q",1, a.Date)
GROUP BY
a.Date, a.Product
这在我看来应该有用。
表a是您的“单月”行日期。
表b是自联接以检索最近4个前几个月。这是通过将b.Date >= DateAdd("q",1, a.Date)
添加为自加入条件来完成的。
答案 1 :(得分:0)
以下是这些事情如何发挥作用的一个很好的例子。
数据:
OrderDetailID OrderID ProductID Price
1 1234 1 $5.00
2 1234 2 ($2.00)
3 1234 3 $4.00
4 1235 1 $5.00
5 1235 3 $4.00
6 1235 5 $12.00
7 1235 2 ($2.00)
SQL:
SELECT OD.OrderDetailID, OD.OrderID, OD.ProductID, OD.Price, (SELECT Sum(Price) FROM tblOrderDetails
WHERE OrderDetailID <= OD.OrderDetailID) AS RunningSum
FROM tblOrderDetails AS OD;