Я занят созданием запроса для выбора одной зарегистрированной версии для каждой основной версии.
Запрос на выбор всех зарегистрированных версий для одного клиента выглядит следующим образом:
select JobReportFKEmpId, JobRecChangeDate, JobRecCreateDate, _JobBldvId RegisteredVersion, left(_JobBldvId,5) MainVersion, _JobDTAPId from dba.Job
where JobCusId = '36811'
and JobContext = '1099511627776'
and _JobDTAPId = 'P'
group by JobReportFKEmpId, JobRecChangeDate, JobRecCreateDate,_JobBldvId, _JobDTAPId
order by 4 desc
Какой приводит к следующему выводу
Мой вывод должен быть: 3 записи, содержащие наивысшую зарегистрированную версию для каждой основной версии. Итак:
- 19.04.22 для 19.04
- 16.10.45 для 16.10
- 15.10.23 для 15.10
Теперь у меня есть создал следующий запрос:
SELECT
JobReportFKEmpId, JobRecChangeDate, JobRecCreateDate, max(_JobBldvId) , left(_JobBldvId,5) Bldv, _JobDTAPId
FROM
(SELECT
*,
ROW_NUMBER() OVER (PARTITION BY left(_JobBldvId,5) ORDER BY (SELECT 1)) AS rn
FROM
dba.Job WHERE JobCusId = '36811'
and JobContext = '1099511627776'
and _JobDTAPId = 'P'
) foo
WHERE rn = 1
group by JobReportFKEmpId, JobRecChangeDate, JobRecCreateDate,_JobBldvId, _JobDTAPId
order by 4 desc
, который дал мне следующий вывод:
Так, кто может улучшить мой запрос, чтобы получить правильный вывод.