我试图在MS Access中获取计数字段的总和。在我的SQL中,我希望有一个sum字段,它为每一行计算该行计数的和+接下来的11行,依此类推。
Ref, Count, Yearly Sum
------------------------------
1508 3
1507 2
1506 5
1505 7
. .
. .
. .
1412 10
1411 11
1410 8
1409 6
1408 1
1407 6
... ...
因此,假设我的查询看起来像上面的查询,我的目标是将第1508行的sum值作为1508到1408(不包括1408)的计数之和,然后将第1507行的sum值作为1507到1407(再次排除)的计数之和,依此类推。
我想知道如何处理我的SQL来对字段中的前12行求和。
最佳答案
您可以使用selfLEFT JOIN
并使用来自您的数据的技巧:
SELECT *, D.ref - I.ref
FROM data AS D
LEFT JOIN data AS I
ON I.Ref <= D.Ref
AND D.ref - I.ref < 100 /* 100 means 12 months here. for example - 1508 - 1408 = 100; < 100 means last 12 months */
ORDER BY D.ref DESC, I.ref DESC
100
这里的值是一个神奇的数字,它将为您定义一个12个月的窗口,基于您的ref
列(假设ref
列是一个整数)。您可以在这里看到扩展的数据以及join如何识别去年的数据。以下是您的解决方案,每年的金额:SELECT D.Ref, D.[Count], SUM(I.[Count])
FROM data AS D
LEFT JOIN data AS I
ON I.Ref <= D.Ref
AND D.ref - I.ref < 100 /* 100 means 12 months here. for example - 1508 - 1408 = 100; < 100 means last 12 months */
GROUP BY D.Ref, D.[Count]
ORDER BY 1 DESC ;
希望有意义。
关于mysql - MS Access查询SQL总和功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31959605/