我的访问表的结构如下所示。
我想做一个查询,它将从上个月(SOURCE字段中的数据月份)中减去本月输入的数据中的VOLUME。
对于上面的例子,结果应该是:
SOURCE | VERSION | SALES MODEL | DESTINATION | PERIOD | VOLUME |
-------+---------+-------------+-------------+--------+--------|
201309 | 1 | model 1 | eu | 201309 | -1 |
在表格中我有更多模型,更多月份和更多来源。我需要始终拥有源和源-1的减法,并且数据应该与模型,目的地和周期匹配。 因此,如果我有3个来源(而不是上面的两个),它应该返回201308-201307和201309-201308的结果。 这可以访问吗?
答案 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月的下个月测试