Tôi có hai bảng, một là một danh sách các nhiệm vụ. Phần còn lại chứa các giá trị lịch sử cho các tác vụ đó.SQL Server: ngày tối đa và tham gia bên trong
Tôi cần tạo danh sách sự kiện mới nhất (và mô tả sự kiện) cho từng séc, miễn là Date_Executed
ít hơn giờ hiện tại trừ đi Timeframe
(TimeFrame
là giờ trong công việc phải được thực hiện , được định dạng để sử dụng trong DATEADD
). Nhưng chỉ khi họ có active = 1
.
Bảng: kiểm tra
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
Bảng: sự kiện
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
Các giải pháp tốt nhất mà tôi có cho đến nay là:
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
và
select MAX(date_Executed), Task_id from daily_check_events group by Task_id
Cả hai đều không nhận được những gì tôi cần, tôi thực sự có thể sử dụng một số trợ giúp.
Ngoài các truy vấn bạn đã cố gắng mà không cung cấp cho bạn kết quả mong muốn, bạn có thể hiển thị các kết quả mong muốn? Ngoài ra, [vui lòng ngừng sử dụng 'FROM table_a, cú pháp table_b'] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins .aspx). –