特定のジョブに関する情報を取得するクエリがあります。トップ1を最大列で表示
しかし、私は(最新の 'LastRun'フィールドに基づいて)各ジョブのトップレコードを取得するのに苦労しています。
どのように私はこれを達成することができますか?
私のクエリは次のとおりです。
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
私は現在の結果を得る:
[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
あなたは、ジョブごとに重複フィールドがある見ることができるように。私はちょうど各ジョブのトップレコードが欲しいので、最新のLastRunの日時の合計は4つだけにする必要があります
重複したジョブがどこにあるのかわかりません –
グループの中からhist.run_timeを削除して、selectのmax(またはmin?)(hist.run_time)に変更してください。それはうまくいく? –
@RyanGadsdon結果の最初のレコードと最後のレコードが表示されます。彼らは同じ仕事です – Bodz