Я не могу сделать это запрос работать с функцией суммы

StackOverflow https://stackoverflow.com/questions/2681374

Вопрос

Этот запрос дает ошибку:

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top