Oracle SQL: в инструкции «WITH», как сделать условный выбор, используйте IF или CASE?

Мой подход всегда заключается в том, чтобы закрыть мой R-скрипт или IDE (т. е. RStudio), а затем запустить его снова. После этого я запускаю свою функцию без предварительной загрузки каких-либо зависимостей / пакетов. Это должно привести к появлению различных предупреждений и сообщений об ошибках, сообщающих вам, какие функции не могут быть найдены и выполнены. Это снова даст вам подсказки о том, какие пакеты необходимо загрузить заранее, и какой из них вы можете оставить.

1
задан a_horse_with_no_name 13 July 2018 в 18:33
поделиться

1 ответ

Использовать union all:

with Test_tbl as (
      select *
      from Test_Persons_A
      where upper(:TEST_TBL) = 'TEST_PERSONS_A' 
      union all
      select *
      from Test_Persons_B
      where UPPER(:TEST_TBL) = 'TEST_PERSONS_B'
     )

Предполагается, что таблицы имеют одинаковые столбцы в одном порядке.

Если они не имеют одинаковых столбцов, определенные столбцы, которые вы хотите использовать для оставшегося кода, возможно, присваивая NULL столбцам, которые могут отсутствовать в одной из таблиц.

3
ответ дан Gordon Linoff 17 August 2018 в 12:18
поделиться
  • 1
    Спасибо @Gordon Linoff, что, если две таблицы не совпадают в столбцах точно? – Stochastika 13 July 2018 в 18:05
  • 2
    Если это так, то вам нужно выбрать соответствующий набор столбцов из каждой таблицы. Не забывайте, что вы всегда можете создать таблицу с нулевым столбцом как таковой NULL AS somecolumn – Zerodf 13 July 2018 в 18:06
  • 3
    Спасибо @ Gordon Linoff, снова. поддержал комментарий. Но еще одна проблема здесь: если у меня более сложное предложение WHERE для начала, то независимо от того, где я добавляю «AND UPPER (: TEST_TBL) = ...», план выполнения не может гарантировать его оценку сначала, может это? Если нет, может быть потенциально большое количество отходов, работая в других условиях в первую очередь этого предложения WHERE? – Stochastika 18 July 2018 в 21:51
  • 4
    @Сточастика. , , Оптимизатор должен оценивать постоянные выражения и делать все возможное. Могут быть ситуации, когда он пропускает то, что должно быть очевидно. – Gordon Linoff 19 July 2018 в 03:06
Другие вопросы по тегам:

Похожие вопросы: