powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сложное условие
5 сообщений из 5, страница 1 из 1
Сложное условие
    #39344687
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток! Есть такая задача. в первом блоке (with) вытаскивается 10 счетов, во втором 20 счетов. в результирующем селекте идет линк (LEFT JOIN) к первому и второму блоку. и в этом сеекте нужно поставить условие что если берется счет из первого блока, то условие расчета одно, для всех остальных счетов (т.е. счетов второго блока) условие расчета другое
with
with1 as
(select acc_number1, sum(amount1) as amount1
from table1
group by acc_number1
),
with2 as
(select acc_number2, sum(amount2) as amount2
from table2
group by acc_number2)

select
если счет with1.acc_number1 то sum(table2.amount-with1.amount1) иначе sum(table2.corr_amount-with1.amount1)
from table 2
left join with1 on with1.acc_number1 = table2.acc_number
left join with2 on with2.acc_number2 = table2.acc_number
where ...
Подскажите пожалуйста как это можно реализовать
...
Рейтинг: 0 / 0
Сложное условие
    #39344691
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i,

юнион никак не поможет гиганту мысли?
...
Рейтинг: 0 / 0
Сложное условие
    #39344697
andreymx,

а ежели table2.acc_number и в with1 и в with2 попадет?
имхо, достаточно acc_number[x] на is null проверять
...
Рейтинг: 0 / 0
Сложное условие
    #39344809
Plohoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если юнион нельзя то..

with1 as
(select acc_number1, sum(amount1) as amount1
from table1
group by acc_number1
),
with2 as
(select acc_number2, sum(amount2) as amount2
from table2
group by acc_number2)

select
case when with1.acc_number1 is not null then sum(table2.amount-with1.amount1)
when with12acc_number1 is not null then sum(table2.corr_amount-with1.amount1)
else 0
end
from table 2
left join with1 on with1.acc_number1 = table2.acc_number
left join with2 on with2.acc_number2 = table2.acc_number
where ...

что то типа такого
...
Рейтинг: 0 / 0
Сложное условие
    #39344825
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlohoyЕсли юнион нельзя то..

with1 as
(select acc_number1, sum(amount1) as amount1
from table1
group by acc_number1
),
with2 as
(select acc_number2, sum(amount2) as amount2
from table2
group by acc_number2)

select
case when with1.acc_number1 is not null then sum(table2.amount-with1.amount1)
when with12acc_number1 is not null then sum(table2.corr_amount-with1.amount1)
else 0
end
from table 2
left join with1 on with1.acc_number1 = table2.acc_number
left join with2 on with2.acc_number2 = table2.acc_number
where ...

что то типа такого

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


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