总结列有一些例外

时间:2015-08-12 08:12:20

标签: access-vba ms-access-2007

我正在研究一个有两个不同表格的数据库 第一个包含数据库中的每个更改,如事务表。它包含购买/出售的对象,购买/出售的对象数量,此次发生的时间以及在哪个地方。 第二个表包含那些位置应该可用的每个对象的总值。

现在这是我的问题:
我想自动将每个条目与表1中的相同对象和位置相加,并将此值保存在表2中 但
有时在表1中有特殊的声明,不应该与其他值相加。他们应该覆盖这个价值。

我有一个例子说明这个总结应该如何:

n = normal value, s = special value   
n:  1  sum:  1  
n:  2  sum:  3  
s:  7  sum:  7  
n:  5  sum: 12  
n:  4  sum: 16  
n:  7  sum: 23  
s: 20  sum: 20  

为了帮助你,我还有一些额外的信息:
表1中有4列

第一个名为object,包含此条目生效的对象编号。

第二列包含该对象的数量。无论是买还是卖。

第三栏告诉我该交易属于哪个地点。这也意味着每个对象的数量都不同,具体取决于位置。

第四列包含此交易发生的原因。它告诉我这笔交易是否发生,因为我买了东西,或者因为我卖了东西,因为我算了我的股票 这是一个特殊的指示器,它应该告诉我的数据库不要总结这个值,而是用这个覆盖前一个。

第五列和最后一列包含此交易发生的日期。这非常重要,因为整个表按日期排序。它告诉我们这些特殊价值何时到位。

另一个表只包含每个位置中每个对象的总计值。

1 个答案:

答案 0 :(得分:0)

以下内容将返回特定对象' MyObj'的每条记录的总和。从特殊'特殊'的最后一个实例开始入境(包括)。

(未测试的)

SELECT Sum(a.Amount) AS TheSum
FROM tblMyTable a
WHERE ID_PK> = nz((
    SELECT max(ID_PK) 
    FROM tblMyTable 
    WHERE Object=a.Object AND IsSpecial=1
),0) 
AND a.Object='MyObj'