J'ai une requête qui obtient des informations sur des travaux spécifiques. Cependant, j'ai du mal à obtenir le meilleur résultat pour chaque travail (basé sur le dernier champ 'LastRun').Afficher le top 1 par colonne max
Toute aide sur comment je peux y parvenir?
Ma requête est:
SELECT
job.Name,
CAST(CAST(hist.run_date AS CHAR(8))
+ ' '
+ STUFF(
STUFF(RIGHT('000000' + CAST(hist.run_time AS VARCHAR(6)), 6)
, 3, 0, ':')
, 6, 0, ':')
AS DATETIME) AS LastRun,
CASE hist.run_status
WHEN 0 THEN 'Failed'
WHEN 1 THEN 'Success'
WHEN 2 THEN 'Retry'
WHEN 3 THEN 'Canceled'
WHEN 4 THEN 'In progress'
END AS Status,
CASE job.enabled
WHEN 0 THEN 'False'
WHEN 1 THEN 'True'
END AS Enabled
FROM dbo.sysjobhistory hist
JOIN dbo.sysjobs_view job ON job.job_id=hist.job_id
WHERE job.[name] = '[Parallel] Copy DBOutboxMaster'
OR job.[name] = '[Parallel] Copy filestore to PPE'
OR job.[name] = '[Parallel] copyLogShippingForECW'
OR job.[name] = '[Parallel] copyLogShippingForNLASQL'
GROUP BY job.name,hist.run_date,hist.run_time,hist.run_status,job.enabled
ORDER BY lastrun DESC
Je reçois actuellement les résultats:
[Parallel] Copy DBOutboxMaster 2017-10-20 09:32:00.000 Success True
[Parallel] Copy filestore to PPE 2017-10-20 09:32:00.000 Success True
[Parallel] copyLogShippingForECW 2017-10-20 09:32:00.000 Success True
[Parallel] copyLogShippingForNLASQL 2017-10-20 09:31:11.000 Success True
[Parallel] Copy DBOutboxMaster 2017-10-20 09:31:00.000 Success True
Comme vous pouvez le voir, il y a des champs en double pour chaque tâche. Je veux juste le record pour chaque travail, donc au total il ne devrait y avoir que 4 résultats de la dernière date de LastRun
Je ne comprends pas où vos travaux en double sont –
Supprimer hist.run_time de groupe par, changer à max (ou min?) (Hist.run_time) dans le select. WOuld ça marche? –
@RyanGadsdon voir le premier enregistrement et le dernier enregistrement du résultat. Ils sont le même travail – Bodz