Я не могу сделать это запрос работать с функцией суммы
Вопрос
Этот запрос дает ошибку:
select ep,
case
when ob is null and b2b_ob is null then 'a'
when ob is not null or b2b_ob is not null then 'b'
else null
end as type,
sum(b2b_d + b2b_t - b2b_i) as sales
from table
where ...
group by ep, type
Ошибка: ORA-00904: «Тип»: неверный идентификатор
Когда я бегу с этим с group by ep
, Сообщение об ошибке становится:
ORA-00979: не группа по выражению
Весь запрос работает нормально, если я удалю линии sum(b2b_d+b2b_t-b2b_i) as sales
а также group by ...
, Таким образом, проблема должна быть связана с суммой и группой по функциям. Как я могу сделать эту работу? Заранее спасибо за вашу помощь.
Решение
К сожалению, SQL не позволяет использовать псевдонимы столбца в группе по словам, поэтому вам либо нужно повторять весь случай, когда это так:
select ep,
case
when ob is null and b2b_ob is null then 'a'
when ob is not null or b2b_ob is not null then 'b'
else null
end as type,
sum(b2b_d + b2b_t - b2b_i) as sales
from table
where ...
group by ep,
case
when ob is null and b2b_ob is null then 'a'
when ob is not null or b2b_ob is not null then 'b'
else null
end
Или используйте вид на линии, как это:
select ep,
type,
sum(b2b_d + b2b_t - b2b_i) as sales
from
( select ep,
case
when ob is null and b2b_ob is null then 'a'
when ob is not null or b2b_ob is not null then 'b'
else null
end as type,
b2b_d,
b2b_t,
b2b_i
from table
where ...
)
group by ep, type
Не связан с StackOverflow