Ho due tabelle, una è una lista di attività. L'altro contenente i valori storici per tali compiti.SQL Server: data massima e join interno
ho bisogno di generare un elenco delle ultime evento (e la sua descrizione) per ogni controllo, fino a quando fino a quando la sua Date_Executed
è inferiore al datetime corrente meno le Timeframe
(TimeFrame
essendo ore all'interno del task deve essere fatto , formattato per l'uso in DATEADD
). Ma solo se hanno un active = 1
.
Tabella: controlli
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
Tabella: eventi
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
le migliori soluzioni che ho finora è:
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
e
select MAX(date_Executed), Task_id from daily_check_events group by Task_id
Nessuno dei due trova quello che mi serve, potrei davvero usare un po 'di aiuto.
Oltre alle domande che hai provato che non vi danno i risultati desiderati, potrebbe mostrare i risultati desiderati? Inoltre, [smetti di usare 'FROM table_a, table_b' syntax] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins aspx). –