我试图在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/

10-09 23:05
查看更多