Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чем можно заменить case на более компанктоное? / 7 сообщений из 7, страница 1 из 1
10.04.2021, 18:12
    #40061362
zorlo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем можно заменить case на более компанктоное?
Добрый день!

Тема такая.

Есть запрос, в котором выбирается дата:

1) Если дата до 7 апреля, то вернуть 7 апреля
2) Если дата до 8 апреля, то вернуть 8 апреля
3) Иначе вернуть 11 мая

Ниже реализация с помощью case. Как можно это сделать компактнее?


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
with qq as
 (select to_date('10.04.2021 02:00', 'dd.mm.yyyy hh24:mi') LastRun from dual)
select LastRun,
       case
         when nvl(LastRun, sysdate) < to_date('07.04.2021 02:00', 'dd.mm.yyyy hh24:mi') then
          to_date('07.04.2021 02:00', 'dd.mm.yyyy hh24:mi')
         when nvl(LastRun, sysdate) < to_date('08.04.2021 02:00', 'dd.mm.yyyy hh24:mi') then
          to_date('08.04.2021 02:00', 'dd.mm.yyyy hh24:mi') 
         else
          to_date('11.05.2021 02:00', 'dd.mm.yyyy hh24:mi') 
       end NextRun
  from qq
 where 1 = 1;
...
Рейтинг: 0 / 0
10.04.2021, 18:29
    #40061363
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем можно заменить case на более компанктоное?
zorloКак можно это сделать компактнее?

Убрать to_date, использовать литералы даты вместо неё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.04.2021, 18:41
    #40061365
zorlo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем можно заменить case на более компанктоное?
А может чем то можно ещё case заменить?
...
Рейтинг: 0 / 0
10.04.2021, 19:21
    #40061369
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем можно заменить case на более компанктоное?
zorlo,
DECODE
...
Рейтинг: 0 / 0
10.04.2021, 19:38
    #40061371
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем можно заменить case на более компанктоное?
Vadim Lejnin,

переписал на decode, еще тот волосан получился

так что, не надо лохматить бабушку
...
Рейтинг: 0 / 0
12.04.2021, 09:22
    #40061579
zorlo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем можно заменить case на более компанктоное?
Vadim Lejnin,

Спасибо
...
Рейтинг: 0 / 0
12.04.2021, 09:37
    #40061587
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чем можно заменить case на более компанктоное?
zorlo,

Единственно, с литералами компактнее
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> alter session set NLS_DATE_FORMAT='DD.MM.YYYY HH24:MI:SS';

Session altered.

SQL> select DATE '2021-04-12' + 2/24 as test from dual;

TEST
-------------------
12.04.2021 02:00:00
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чем можно заменить case на более компанктоное? / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]