按日期移动总和(MS Access SQL)

时间:2018-07-20 14:28:07

标签: sql ms-access

我有一个表A,其中有许多相同的 CODNEG Date 条目:

CODNEG  QUATOT  VOLTOT        Date
ABCD11     937  103070  31/01/2011
ABCD11    1976  205504  31/01/2011
ABCD11    1859  193336  31/01/2011
ABCD11    1026  110808  28/02/2011
ABCD11      49    4410  31/07/2011
XYZW11      35    3570  31/01/2011
XYZW11     627   63954  31/01/2011
     .       .       .           .
     .       .       .           .
     .       .       .           .

我正在尝试创建一个查询,该查询的字段值为: VOLTOT 的总和/ QUATOT 的总和。例如,如果日期是2011年7月31日,那么过去12个月中的CODNEG ,我想将2010年8月/ 7月的值相加/ 2011。

  • (1)日期始终是该月的最后一天
  • (2)过去十二个月的条目数可以是0到〜250之间的任何整数

我发现了一些类似的问题,但是我无法根据他们的解决方案解决这个问题,因为特殊性数字(2)使其与众不同。 我想知道是否可以做我想做的事情,如果可以,我该怎么做。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您将使用相关子查询。根据您的日期算术,我认为应该是:

select t.*,
       (select sum(a2.voltot) / sum(a2.quatot)
        from a a2
        where a2.codneg = a.codneg and
              a2.date > dateadd("m", -12, date) and
              a2.date <= date
       ) as ratio
from a;

如果您实际上想要整整几个月的时间,可能会有些复杂,但是想法是相同的。

答案 1 :(得分:1)

尝试一下:

注意-将字段Date重命名为DT

SELECT CODNEG, SUM(VOLTOT)/SUM(QUATOT ) AS Div, DT 
FROM (SELECT *
from tableA
Where DT Between  DateSerial(Year(DT), Month(DT)-11, 1) And DateSerial(Year(DT), Month(DT)+1, 0))  AS T
GROUP BY CODNEG, DT ;

结果 :(输入日期-07/31/2011

enter image description here