DECLARE @snapshot_in_error BIT = 0;
declare @today datetime = DATEADD(DAY,0,DATEDIFF(DAY,0,CURRENT_TIMESTAMP))

SELECT h.*
FROM msdb.dbo.sysjobs j
	JOIN msdb.dbo.sysjobhistory h ON h.job_id = j.job_id
WHERE j.name ='D00480 - ActivePos_read Snapshot'
AND msdb.dbo.agent_datetime(h.run_date, h.run_time) > @today
AND h.run_status = 0	--there was an error
AND NOT EXISTS(
	--there is not record not in error after the one found above
	SELECT 1
	FROM msdb.dbo.sysjobhistory h2
	WHERE h2.job_id = h.job_id
	AND msdb.dbo.agent_datetime(h2.run_date, h2.run_time) > msdb.dbo.agent_datetime(h.run_date, h.run_time) 
	AND h2.run_status <> 0
    and h2.step_id = 0
)
ORDER BY h.run_time DESC ;

SELECT @snapshot_in_error = @@ROWCOUNT;

if @snapshot_in_error = 1
begin
    exec msdb.dbo.sp_start_job @job_name='D00480 - ActivePos_read Snapshot'
end 