Соединение View против временной таблицы с статистической функцией и случай, когда - PullRequest
0 голосов
/ 09 мая 2018

У меня большой запрос с несколькими объединениями, включая подзапрос (сохраненный как представление). По сути это выглядит так.

Select 
 sum(a.amount), 
 case when a.criteria1 = 'c' then 'something' 
  when v.min_rank = 2 then 'something else'
  ....
  else 'other' end
from main_table a
left join view v
 on a.column1 = v.column1
group by
 case when a.criteria1 = 'c' then 'something' 
  when v.min_rank = 'd' then 'something else'
  ....
  else 'other' end

Где вид

select min(c.rank) as min_rank, a.column1
from main_table a
left join crieria c
on c.criteria = a.some_column
group by a.column1

Oracle

По какой-то причине агрегация приводит к тому, что мой подзапрос (представление) не присоединяется (v.columns имеют значение null). (Если я не суммирую и не отбрасываю группу с помощью v.columns, они не равны нулю) Замена подзапроса временной таблицей решает проблему, но мне не ясно, почему. Это решение с созданием временной таблицы или вероятной причиной (проблема с памятью?)?

Спасибо

...