powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Условие выбора в SELECT
5 сообщений из 5, страница 1 из 1
Условие выбора в SELECT
    #39393124
PaxExterminatus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго, допустим есть условие, от его зависит выбор нескольких параметров. Как сделать, что бы условие не нужно было дублировать для каждой колонки.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT
 se.CLIENT_ID,

 CASE WHEN EMC.MSG_COUNT(LENGTH(sr.MSG),sr.EMSG_TYPE) <= EMC.MSG_COUNT(LENGTH(se.MSG),se.EMSG_TYPE)  THEN sr.MSG
 
ELSE se.MSG
 END AS SMS_TYPE
FROM EMSG_ENG se, EMSG_RUS sr 
WHERE se.CLIENT_ID = sr.CLIENT_ID
...
Рейтинг: 0 / 0
Условие выбора в SELECT
    #39393137
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaxExterminatusКак сделать, что бы условие не нужно было дублировать для каждой колонки.Вынести его в inline-view.
...
Рейтинг: 0 / 0
Условие выбора в SELECT
    #39393224
PaxExterminatus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

не совсем понял как это поможет избавиться от нескольких case, если можно простенький примерчик

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT
 se.CLIENT_ID,

 CASE WHEN EMC.MSG_COUNT(LENGTH(sr.MSG),sr.EMSG_TYPE) <= EMC.MSG_COUNT(LENGTH(se.MSG),se.EMSG_TYPE)  THEN  sr.EMSG_TYPE
 ELSE se.EMSG_TYPE
 END AS EMSG_TYPE,  

 CASE WHEN EMC.MSG_COUNT(LENGTH(sr.MSG),sr.EMSG_TYPE) <= EMC.MSG_COUNT(LENGTH(se.MSG),se.EMSG_TYPE)  THEN sr.MSG
 ELSE se.MSG
END AS MSG

FROM EMSG_SMS_ENG se, EMSG_SMS_RUS sr --ИСПОЛЬЗОЫВАТЬ ФУНКЦИЮ ВЫБОРА
WHERE se.CLIENT_ID = sr.CLIENT_ID
...
Рейтинг: 0 / 0
Условие выбора в SELECT
    #39393245
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select 
case when dummy = 'X' and length(dummy) = 1 and upper(dummy) = dummy then 'Hello' end,
case when dummy = 'X' and length(dummy) = 1 and upper(dummy) = dummy then 'world' end 
from dual;

select 
case when pr = 1 then 'Hello' end,
case when pr = 1 then 'world' end
from
   (select 
    case when dummy = 'X' and length(dummy) = 1 and upper(dummy) = dummy then 1 else 0 end pr
    from dual
   );
...
Рейтинг: 0 / 0
Условие выбора в SELECT
    #39393248
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaxExterminatus,

напиши вместо джоина юнион и first/last.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Условие выбора в SELECT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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