@aeesha
Студент

Как написать select в PL/SQL через переменную для отчета используя case?

ниже запрос для отчета в котором нужно сравнить возвращенные данные в столбцах dat_prev, dat_cur. B запросе использую переменные :v_datn1,:v_datk1,:v_datn2,:v_datk2 для того, чтобы прописать период.

select l.TIP, l.N_TIP, l.KOD, l.NAIM, l.ADRES, l.ZAV_NOM, l.OBJ_NAIM, f.dat,

(case when to_date(f.dat) between to_date(:v_datn1) and to_date(:v_datk1) then f.voda_k else 0 end ) dat_prev,

(case when to_date(f.dat) between to_date(:v_datn2) and to_date(:v_datk2) then f.voda_k else 0 end ) dat_cur

from rv_potreb_obj l
left join wv_nach_fino f on (l.tip=f.tip);

Проблема заключается в том, что case не фильтрует по условию, то есть какой период в переменных я бы не прописала, он мне возвращает все данные за все время. Если использовать условие where, то каким образом прописать и как тогда в этом случае использовать case? Прошу различные варианты описать, не судить строго - набираюсь опыта
  • Вопрос задан
  • 592 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Дык CASE, сам по себе, и не должен ничего фильтровать. Для фильтрации данных используются WHERE, HAVING и условия в JOIN'ах.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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