Перекрестный поиск в oracle без создания таблицы - PullRequest
0 голосов
/ 04 августа 2020

У меня есть список из 20 записей, сопоставляющих год с числом с 2001 по 2021 год. По нескольким причинам они не могут быть загружены в таблицу, и у меня нет прав на создание временных таблиц. Этот поиск означает, что я не могу просто выполнить один запрос в oracle - мне нужно экспортировать и присоединиться с помощью скрипта. Есть ли способ просто выполнить поиск в памяти? Я мог бы использовать оператор CASE WHEN для обработки каждого из 20 случаев. Но есть ли другой более плавный способ проверки значений по списку в Oracle, когда вы не можете писать в таблицу между ними?

1 Ответ

1 голос
/ 04 августа 2020

Если я вас правильно понял, CTE может помочь:

SQL> with years as
  2    (select 2000 + level as year
  3     from dual
  4     connect by level <= 21
  5    )
  6  select year
  7  from years
  8  /

      YEAR
----------
      2001
      2002
      2003
      2004
      <snip>
      2020
      2021

21 rows selected.

SQL>

Теперь вы должны объединить years с другими таблицами, например

with years as 
...
select y.year, e.hiredate
from years y join employees e on e.year = y.year
where ...
...