关于上次运行日期的复杂查询

时间:2013-10-31 14:35:21

标签: sql ms-access access-vba

啊,逻辑正在煎炸我的大脑!

我有一个Archive表,用于记录运行某个任务时的RunDate。看起来像这样,但有许多记录具有相同的TaskID和不同的运行日期。

enter image description here

我需要查询此表以查找本月尚未运行的任务。

这是我有多远:

SELECT *
FROM (SELECT DISTINCT TaskID FROM tbl_Archive WHERE RunDate <= DateSerial(Year(Now), Month(Now), 1))  AS sub INNER JOIN tbl_Task ON sub.TaskID = tbl_Task.TaskID
WHERE (((tbl_Task.Frequency)="Monthly"));

(我正在选择DISTINCT,因为我只想显示一次任务)

这会显示本月没有运行的任务的存档记录,但问题是,它没有考虑该任务是否已在本月运行。

所以我不得不说如果有这个月的日期就排除记录。

我希望有人能澄清这个简单但又如此困难的问题。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用NOT IN语句排除本月运行的ID

SELECT *
FROM (SELECT DISTINCT TaskID FROM tbl_Archive 
WHERE RunDate <= DateSerial(Year(Now), Month(Now), 1)
AND TaskID NOT IN 
(SELECT TaskID FROM tbl_Archive WHERE RunDate > DateSerial(Year(Now), Month(Now), 1))
)  
AS sub INNER JOIN tbl_Task ON sub.TaskID = tbl_Task.TaskID
WHERE (((tbl_Task.Frequency)="Monthly"));