月与月查询(同一表中的数据)

时间:2013-09-01 18:07:10

标签: sql ms-access join subquery

我的访问表的结构如下所示。 enter image description here

我想做一个查询,它将从上个月(SOURCE字段中的数据月份)中减去本月输入的数据中的VOLUME。

对于上面的例子,结果应该是:

SOURCE | VERSION | SALES MODEL | DESTINATION | PERIOD | VOLUME |
-------+---------+-------------+-------------+--------+--------|
201309 |   1     |   model 1   |     eu      | 201309 |    -1  |

在表格中我有更多模型,更多月份和更多来源。我需要始终拥有源和源-1的减法,并且数据应该与模型,目的地和周期匹配。 因此,如果我有3个来源(而不是上面的两个),它应该返回201308-201307和201309-201308的结果。 这可以访问吗?

1 个答案:

答案 0 :(得分:3)

您可以使用表别名将表连接到自身。一旦你知道了这一点,唯一棘手的问题就是弄清楚月份价值会在一个又一个之后出现。

Select
  t1.source,
  t1.version,
  t1.[sales model],
  t1.destination,
  t1.period,
  t1.volume - t2.volume as volume
From
  table t1
    inner join
  table t2
    on
      t1.Source = IIf(t2.source Mod 100 = 12, t2.Source + 89, t2.Source + 1) And
      t1.version = t2.version and
      t1.[sales model] = t2.[sales model] and
      t1.destination = t2.destination and
      t1.period = t2.period

编辑 - 修复了12月的下个月测试