1

我创建了 2 个表。一张表有 4 个字段。一个唯一的名称、一个日期和 3 个数字。第二个表包含相同的字段,但记录了合并函数的输出。因此具有更新或插入功能发生的日期。我想要做的是检索 2 天之间的差值或 2 天的总数的总和,以计算出该值在一天内发生了多少变化。合并函数仅在值已更改或需要插入新值时更新。

到目前为止我有这个

select sum(Change_Table_1.Disk_Space) as total,
Change_Table_1.Date_Updated

from VM_Info
left join Change_Table_1

on VM_Info.VM_Unique = Change_Table_1.VM_Unique
where VM_Info.Agency = 'test'
group by Change_Table_1.Date_Updated

但这只会返回当天更新总数的总和,而不是两天之间的差值。这个问题的一个答案是将所有新记录添加到表中,但这将包含许多重复项。因此,在我的脑海中,我想要它做的是循环遍历当天的当前数据,然后循环遍历第二天,还包括所有尚未更新的值。抱歉,如果我没有很好地解释这一点。所以我想要实现的是随着时间的推移使总数发生某种变化。如果其糟糕的设计我也可以接受。

任何帮助深表感谢。

也许这会更好地解释它。显示第 1 天的总计值,如果值没有更改,则显示第 2 天的相同值,如果更改显示新值。等等...

好的,进一步详细说明。

Change_Table 看起来像

vm date created action value_Field1 value_field_2 Disk_Space


abc 14/10/2013 insert  5  5  30

def  14/10/2013 insert  5  5  75

abc  15/10/2013  update  5  5  75

所以我想要的输出是 14 号,最后一列的总数是 105。15 号 abc 已从 30 变为 75,但 def 没有改变,但仍需要包含 150

所以输出看起来像

date       disk_Space

14/10/2013 105

15/10/2013 150
4

1 回答 1

0

这有帮助吗?如果没有,您能否提供几行示例数据以及所需结果的示例?

select 
  (VM_Info.Disk_Space - Change_Table_1.Disk_Space) as DiskSpaceChange,
  Change_Table_1.Date_Updated
from 
  VM_Info
  left join Change_Table_1 on VM_Info.VM_Unique = Change_Table_1.VM_Unique and VM_Info.Date = Change_Table_1.Date_Updated
where 
  VM_Info.Agency = 'test'
于 2013-10-14T03:11:40.460 回答