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

Тема такая.

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

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
Чем можно заменить case на более компанктоное?
    #40061363
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zorloКак можно это сделать компактнее?

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

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

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

Спасибо
...
Рейтинг: 0 / 0
Чем можно заменить case на более компанктоное?
    #40061587
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чем можно заменить case на более компанктоное?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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