1

あぁ、論理が頭をよぎる!

特定のタスクが実行されたときの RunDate を記録する Archive テーブルがあります。このように見えますが、同じ TaskID で実行日が異なるレコードが多数存在します。

ここに画像の説明を入力

このテーブルにクエリを実行して、今月実行されていないタスクを探す必要があります。

これは私が持っている距離です:

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"));

(タスクを 1 回だけ表示したいので、DISTINCT を選択しています)

これにより、今月実行されていないタスクのアーカイブ レコードが表示されますが、問題は、タスクが今月実行されたかどうかが考慮されていないことです。

だからどういうわけか、今月の日付がある場合はレコードを除外する必要があります。

この単純だけどとても難しい問題を誰かが解明してくれることを願っています。

ありがとう

4

1 に答える 1

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"));
于 2013-10-31T14:51:05.623 に答える