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

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
SELECT 
           t1.j
         , CASE WHEN t1.a1 = 'a' THEN 1
                   WHEN t1.b1 = 'b' THEN 2
                   WHEN t1.c1 = 'c' THEN 3
                   ELSE 0
           END sum_t1
         , CASE WHEN t2.a2 = 'a' THEN 1
                   WHEN t2.b2 = 'b' THEN 2
                   WHEN t2.c2 = 'c' THEN 3
                   ELSE 0
           END sum_t2
         , CASE WHEN t1.a1 = 'a' THEN 1
                   WHEN t1.b1 = 'b' THEN 2
                   WHEN t1.c1 = 'c' THEN 3
                   ELSE 0
           END 
        * CASE WHEN t2.a2 = 'a' THEN 1
                   WHEN t2.b2 = 'b' THEN 2
                   WHEN t2.c2 = 'c' THEN 3
                   ELSE 0
           END t1_t2
FROM
           t1
         , t2
WHERE 
           t1.j = t2.j



Можно ли как-нибудь использовать псевдонимы кейсов без самих кейсов при умножении, не используя подзапросов ?

т.е. кроме примера, приведённого ниже, можно как-нибудь выкрутиться из данной ситуации ?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SELECT
           main.*
         , main.sum_t1*main.sum_t2 AS t1_t2
FROM
(
SELECT 
           t1.j
         , CASE WHEN t1.a1 = 'a' THEN 1
                   WHEN t1.b1 = 'b' THEN 2
                   WHEN t1.c1 = 'c' THEN 3
                   ELSE 0
           END sum_t1
         , CASE WHEN t2.a2 = 'a' THEN 1
                   WHEN t2.b2 = 'b' THEN 2
                   WHEN t2.c2 = 'c' THEN 3
                   ELSE 0
           END sum_t2
FROM
           t1
         , t2
WHERE 
           t1.j = t2.j
) main
...
Рейтинг: 0 / 0
CASE и подзапросы
    #39458766
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wild-Jack,

Предложи синтаксис, как непротиворечиво обозначить алиасы текущего уровня. Посчитай, сколько символов сэкономил. Посчитай, сколько написал в своем сообщении.
...
Рейтинг: 0 / 0
CASE и подзапросы
    #39458783
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wild-Jack,
в 12-ке пририсовать with функцию (on-line или как там она называетя)


.....
stax
...
Рейтинг: 0 / 0
CASE и подзапросы
    #39458790
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..Wild-Jack,
в 12-ке пририсовать with функцию (on-line или как там она называетя)


.....
staxВ 12-ке можно инкапсулировать и в обычную функцию с pragma udf.
Затраты на переключение контекста будут мизерны.
...
Рейтинг: 0 / 0
CASE и подзапросы
    #39458809
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopstax..Wild-Jack,
в 12-ке пририсовать with функцию (on-line или как там она называетя)


.....
staxВ 12-ке можно инкапсулировать и в обычную функцию с pragma udf.
Затраты на переключение контекста будут мизерны.
на обычную надо еще и права иметь на создание

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


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