SQL Last DateTime значение - PullRequest
       3

SQL Last DateTime значение

0 голосов
/ 27 февраля 2019

Я пытаюсь сделать запрос к некоторым базам данных 'job', где мне нужно последнее значение datetime для каждой операции operation_service в данном задании.Мне также нужно знать, завершена ли операция или нет.

SELECT Job.Job, Job_Operation.Operation_Service, Job_Operation.Sequence, 
MAX(Job_Operation_Time.Last_Updated) AS 'Last_Updated', Job_Operation_Time.Operation_Complete
FROM  Job_Operation 
LEFT JOIN Job ON Job.Job = Job_Operation.Job 
LEFT JOIN Job_Operation_Time ON Job_Operation_Time.Job_Operation = Job_Operation.Job_Operation
WHERE Job.Status = 'Active'
GROUP BY Job.Job, Job_Operation.Operation_Service, Job_Operation.Sequence, Job_Operation_Time.Last_Updated, Job_Operation_Time.Operation_Complete
ORDER BY Job.Job, Sequence

Здесь приведен фрагмент некоторых результатов:

enter image description here

Я хотел бы запрос, который возвращает все выделенные записи, но не возвращает записи с красной линией через поле задания.Значения NULL возможны как для Operation_Complete, так и для Last_Updated.

1 Ответ

0 голосов
/ 27 февраля 2019

использование row_number()

with cte  as
(
SELECT Job.Job, Job_Operation.Operation_Service, Job_Operation.Sequence, 
(Job_Operation_Time.Last_Updated) AS 'Last_Updated', Job_Operation_Time.Operation_Complete
,row_number()over(partition by Job_Operation.Operation_Service order by Job_Operation_Time.Last_Updated desc) rn
FROM  Job_Operation 
LEFT JOIN Job ON Job.Job = Job_Operation.Job 
LEFT JOIN Job_Operation_Time ON Job_Operation_Time.Job_Operation = Job_Operation.Job_Operation
WHERE Job.Status = 'Active'
) select * from cte where rn=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...