MS Access查询SQL Sum函数

时间:2015-08-12 08:12:43

标签: mysql

我想在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的和值作为从1508到1408(不包括1408)的计数之和,然后将1507作为计数之和1507至1407(再次排除)然后依此类推。

我想知道如何处理我的SQL以对字段中的前12行求和。

1 个答案:

答案 0 :(得分:1)

您可以使用自我LEFT 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值是一个神奇的数字,它将为您定义一个窗口,根据您的ref列(假设ref列是整数),这个窗口为12个月。您可以在此处查看扩展数据以及联接将如何识别去年的数据。以下是您的解决方案,即年度总和:

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 ;

希望它有意义。