Tengo dos tablas, una es una lista de tareas. El otro contiene valores históricos para esas tareas.SQL Server: fecha máxima y unión interna
necesito para generar una lista del último evento (y su descripción) por cada cheque, siempre, siempre y cuando su Date_Executed
es menor que la fecha y hora actual menos los Timeframe
(TimeFrame
siendo hora dentro de la tarea que hay que hacer , formateado para usar en DATEADD
). Pero solo si tienen un active = 1
.
Tabla: cheques
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
Tabla: eventos
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
las mejores soluciones que tengo hasta ahora es:
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
y
select MAX(date_Executed), Task_id from daily_check_events group by Task_id
Ninguno de los cuales me da lo que necesito, realmente podría necesitar ayuda.
Además de las consultas que ha intentado que no le dan los resultados que desea, se puede mostrar los resultados que desea? Además, [deje de usar la sintaxis 'FROM table_a, table_b'] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins .aspx). –