该表如下所示:
part value
BAC 102
BS1 275
MAV 425
BAC 519
BSF 653
BAC 1072
结果将是:
对于部分 BAC
part value difference
BAC 102 102
BAC 519 417
BAC 1072 553
除了价值是有序的,没有任何关系。
使用了下面的 SQL 语句,但结果没有用,因为它没有按“WHERE”要求的部分过滤结果,第一行应该有差异 102 的值但它是空的。
SELECT ABS(T2.value - T1.value) AS Difference, T1.Part,T1.value,
FROM table AS T1 RIGHT JOIN table AS T2 ON
T2.report = T1.Report+ 1
WHERE (((T1.part)=[Forms]![Parts]![Part]));
更新:
我添加到@Tom Collins 的功能
Function GetDiff(CurrPart As String, CurrValue As Long) As Long
Static LastPart As String
Static LastValue As Long
If CurrPart <> LastPart Then
LastValue = 0
LastPart = CurrPart
End If
If LastValue = CurrValue Then
GetDiff = CurrValue
Else
GetDiff = CurrValue - LastValue
LastValue = CurrValue
End If
End Function
结论:
函数运行正常,但是当结果放在报表中时发生了奇怪的事情,查询的第一个值出现错误,单击时又出现正确。另一个奇怪的事情是,如果我想要显示错误值的字段的平均值,它会显示正确的平均值,如果我点击错误的值,然后一切正常,平均值保持不变。这个问题已经回答了,剩下的问题是另一个问题。谢谢@汤姆柯林斯。