访问查询超过日期范围

时间:2016-05-03 10:23:49

标签: sql ms-access

我有一个访问查询,用于计算指定时间内某个位置的总活动。有没有办法在一系列日期中运行它并使用SQL返回结果,还是应该编写一个表单来运行查询各种日期代码?

为了使问题稍微复杂一点,查询还处理放射性衰变,在请求时将每个项目更正为当前活动 - 尽管这可能会被忽略以进行测试。

最后,在一个稍微不相关的注释中,项目随时到达并留下一个位置,但是每天每秒都有数据点是不可行的,因此我使用三个小时的间隔作为妥协 - 放射性衰变遵循一个等式,任何人都有更好的方法这样做(这样一旦项目到达就会绘制数据,否则从到达时间和绘制的间隔的衰减会影响我的结果)或者这是我最好的可能管理?

单个日期的当前SQL:

SELECT FORMAT(SUM(Items.Activity*(Exp(-(0.693*(dDate-Items.MeasuredOn)/Nuclides.HalfLife)))), '#,##0.00') AS CurrentActivity
FROM Nuclides INNER JOIN ((Locations INNER JOIN (Items INNER JOIN ItemLocations ON Items.ItemID = ItemLocations.ItemID) ON Locations.LocationID = ItemLocations.LocationID) INNER JOIN LocationLimits ON Locations.LocationID = LocationLimits.LocationID) ON (Nuclides.Nuclide = Items.Nuclide) AND (Nuclides.Nuclide = LocationLimits.Nuclide)
WHERE (((ItemLocations.LocationID)=lLocationID) AND ((ItemLocations.RecieptDate)<dDate) AND ((ItemLocations.DisposalDate)>dDate Or (ItemLocations.DisposalDate) Is Null));

1 个答案:

答案 0 :(得分:0)

无法弄清楚如何以我最初想象的方式解决,所以解决如下:

用户输入他们想要查看数据的时间段的日期范围。

一个查询返回事件发生时所有日期的单个列表(添加日期项目,删除日期项目)

使用在达到事件时间之前计算的设定时间间隔(现在为1小时)活动。在事件发生时,活动计算事件发生前的半秒和事件本身的时间。然后我们继续我们的小时间隔,直到下一个事件。

在最终事件之后,以间隔计算,直到达到结束时间。

这足够快,对用户来说不是问题,图表就像它需要的那样平滑。 FYI活动也会在事件发生前半秒计算,以在线上产生垂直斜率,否则它将从前一点倾斜(可能是一小时或更长时间)。