Я пытаюсь написать запрос, в котором мне нужно выполнить выбор в предложении where в соответствии с определенной переменной.Case when in where where
Моего сценарий выглядит следующим образом:
def schd_yn ='Y';
def clin_schd = '1,2';
CREATE TABLE TEMP_SUBOPT AS
SELECT *
FROM P112921.SCHEDULE_DATA
WHERE clin_sch IN (CASE WHEN '&schd_yn.' = 'Y'
THEN &clin_schd.
ELSE clin_sch
END)
;
То, что я хотел бы сделать именно это взять все данные от моего источника в случае schd_yn устанавливается на N, и принимать только значение, определенное в clin_schd в case schd_yn установлен на Y.
Это решение хорошо работает в случае, если у вас есть только 1 значение в клинике.
Эти комбинации хорошо работает:
def schd_yn='Y'; //takes only clin_sch=1
def clin_schd='1';
def schd_yn='N'; //takes everything as expected
def clin_schd='1';
Эти комбинации не работает должным образом и генерирует ошибки:
def schd_yn='Y';
def clin_schd='1,2';
def schd_yn='N';
def clin_schd='1,2';
ли кто-то знает, как сделать эту работу?
Спасибо
Как правило, лучше использовать 'AND' /' OR' вместо выражений 'case' в предложении' WHERE'. – jarlh
Не используйте значения, разделенные запятой, в SQL. Это вызовет у вас массу проблем. – jarlh
@a_horse_with_no_name: вы не должны удалять тег sqldeveloper, потому что этот скрипт, по-видимому, специфичен для SQL Developer. Я добавил тег снова. –