我有两张表,一张是任务列表。另一个包含这些任务的历史值。
我需要为每次检查生成最新事件(及其描述)的列表,只要它Date_Executed
小于当前日期时间减去Timeframe
(TimeFrame
必须完成任务中的小时数,格式化以供使用DATEADD
)。但前提是他们有一个active = 1
.
表:检查
Check_id description TimeFrame active
1 Task One -24 0
2 Task Two -24 0
3 Task Forty -48 1
4 Task Somehin -128 1
表:事件
Event_id Check_id Comment Date_Executed User_Executed
1 1 NULL 2012-09-18 16:10:44.917 admin
2 1 NULL 2012-09-25 11:39:01.000 jeff
3 4 Failed 2012-09-25 13:20:09.930 steve
4 4 Half failed 2012-09-25 13:05:09.953 marsha
5 2 NULL 2012-09-25 14:02:24.000 marsha
6 3 NULL 2012-09-18 16:10:55.023 marsha
到目前为止,我最好的解决方案是:
SELECT
a.[Date_Executed]
a.[Check_id],
a.[Comments],
b.[frequency],
b.[Check_id],
b.[description]
FROM
[checksdb].[dbo].events as a,
[checksdb].[dbo].checks as b
where
b.active = 1
and a.[Date_Executed] < = dateadd(HOUR,b.[frequency],GETDATE())
and a.Check_id = b.Check_id
order by Check_id, priority
和
select MAX(date_Executed), Task_id from daily_check_events group by Task_id
两者都没有得到我需要的东西,我真的可以使用一些帮助。