найти все номера карт, в которых самый большой id oracle - PullRequest
0 голосов
/ 05 августа 2020

У меня просьба. Он работает, но я не могу его обновить. Я хочу, чтобы он отображал не все записи с идентификационных карт, а только те, в которых самый большой идентификатор, то есть могут быть записи с идентификационных карт, но с одним идентификатором 100, а с другим также записью 101, я хочу, чтобы в ответ там была только запись от 101.

select a.id,
       a.employee_id,
       a.STATUS,
       a.expiration_date,
       a.ID_CARD
  from EM_STATUS_CARD a
  left join EM_CARD b on  a.ID_CARD = b.ID_CARD
  where b.del != 'true' or  b.del is null

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

Должно работать нормально. Я провел некоторый рефакторинг, так как Oracle поддерживает using для соединения

select id,
       employee_id,
       STATUS,
       expiration_date,
       ID_CARD
from EM_STATUS_CARD
left join EM_CARD using(ID_CARD)
where (del != 'true' or del is null) and id = (
  select max(id) 
  from EM_STATUS_CARD
)
0 голосов
/ 05 августа 2020

Хорошей практикой является предоставление образцов данных и ожидаемого результата, но в отсутствие этой информации, я полагаю, вы ищете что-то вроде запроса ниже.

with main_query as (select a.id,
       a.employee_id,
       a.STATUS,
       a.expiration_date,
       a.ID_CARD
  from EM_STATUS_CARD a
  left join EM_CARD b on  a.ID_CARD = b.ID_CARD
  where b.del != 'true' or  b.del is null)
  select x.id, y.employee_id, y.id_card, y.status, y.expiration from
  (select max(id) id, id_card from main_query group by id_card) x, main_query y
  where a.id_card = b.id_card;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...