Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сложное условие / 5 сообщений из 5, страница 1 из 1
10.11.2016, 12:03
    #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
10.11.2016, 12:04
    #39344691
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложное условие
hum_i,

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

а ежели table2.acc_number и в with1 и в with2 попадет?
имхо, достаточно acc_number[x] на is null проверять
...
Рейтинг: 0 / 0
10.11.2016, 13:41
    #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
10.11.2016, 13:51
    #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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сложное условие / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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