Множественные значения в выражении case используются в качестве правого операнда оператора where sql oracle - PullRequest
0 голосов
/ 14 сентября 2018

Мне нужна ваша помощь в решении проблемы, я немного погуглил, но не смог найти конкретный ответ.У нас есть работа, выполняемая с понедельника по пятницу, и до сегодняшнего дня, когда мы работали в понедельник, мы использовали для получения отчета за пятницу и за все другие дни, отчет был создан за предыдущий день.Такое поведение было достигнуто с помощью запроса ниже, выбор поля произвольный:

    select field1, field2... from table where date = (
       case when TO_CHAR(TRUNC(sysdate), 'DY') = 'MON' then TRUNC(sysdate - 3)        
           else (TRUNC(sysdate-1)) END);

Теперь требование изменилось, и нам нужно отображать результат для всех трех дней пятница, суббота и воскресенье при запуске в понедельник.

Я не могу найти способ сделать это.Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 14 сентября 2018

Я думаю, этого должно быть достаточно, чтобы изменить = знак на >= в условии и добавить еще один, чтобы исключить текущую дату:

select field1, field2... from table 
 where date >= (
       case when TO_CHAR(TRUNC(sysdate), 'DY') = 'MON' then TRUNC(sysdate - 3)        
           else (TRUNC(sysdate-1)) END)
   and date < TRUNC(sysdate);
...