Oracle SQL - поиск первой записи после определенной даты - PullRequest
0 голосов
/ 15 октября 2018

Я работаю с Oracle SQL и столкнулся с проблемой.

У меня есть одна таблица Таблица A , где я получаю возврат для транспортного средства.

У меня естьдругая таблица Таблица B , где я получаю даты осмотра транспортного средства.В таблице есть столбец с именем id , где id = 2 означает, что автомобиль был осмотрен.Существует возможность многократного осмотра транспортного средства.

Возможно ли каким-либо образом получить первую дату осмотра после даты возвращения?

Он пробовал что-то вроде следующего, но кажется, что он далеко,Есть идеи?

select a.returndate, b.time as inspectdate
from tabel a
join tabelb b on a.vehicleid = b.vehicleid where b.id = 93
where a.vehicle= 011 and min(b.time) > a.returndate;

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Это хороший вариант использования для CROSS APPLY, если у вас Oracle 12c:

select a.returndate, b.inspectdate
from tabela a
CROSS APPLY ( SELECT * FROM tabelb b 
              WHERE b.vehicleid = a.vehicleid
              AND   b.inspectdate > a.returndate
              ORDER BY b.inspectdate
              FETCH FIRST 1 ROW ONLY ) b
where  a.vehicleid = 011

Для каждой строки в tabela, CROSS APPLY найдет tabelb записей, которыепозже returndate, закажите их по inspectdate и дайте вам только 1-й.

Это имеет преимущество перед ответом IT Alex в том, что оно работает без ограничения на a.vehicleid.То есть вы можете запустить его сразу для нескольких автомобилей (скажем, в отчете или на итоговом экране).

0 голосов
/ 15 октября 2018
select a.returndate, b.inspectdate
from tabel a
join tabelb b on a.vehicleid = b.vehicleid
where a.vehicle= 011 
and   b.inspectdate > a.returndate
and   b.id = 93
order by b.inspectdate asc;

Возьмите инспекцию (и), которые прошли более поздний срок, а затем упорядочите их от самых старых до самых новых.В первой строке будет указана дата первой проверки после возврата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...