возможно ли такое прокидывание предиката ?

nxx
Дата: 26.10.2015 10:08:34
есть запрос типа

select ...
from
(
-- 1
select '1' subqr, ...
from ...
where ...
group by f1, ...
union all
-- 2
select '2' subqr, ...
from ...
where ... /* сюда */
group by f1, ...
union all
-- 3
select '3' subqr, ...
from ...
where ...
group by f1, ...
) t1
, t2
where t1.f1 = t2.f1
and ((t2.test1 = 'TEST' and subqr = '2') or (subqr <> '2'))


чего хочется
чтобы запрос начинался с t2
и для тех записей где t2.test1 = 'TEST'
брался соотв. t2.f1
и прокидывался внутрь '2' subqr во where
внутрь подзапроса и внутрь group by

зачем:
джойнить t2 с каждым подзапросом не очень весело, особенно если их будет 10
а без такого фильтра '2' subqr работает ну очень долго
джойнить t2 дополнительно только на '2' subqr как-то не красиво

интересует хотя бы ответ "можно/нельзя"
сорри за отсутствие полноценного теста
AlexFF__|
Дата: 26.10.2015 10:19:47
nxx
и для тех записей где t2.test1 = 'TEST'
брался соотв. t2.f1
и прокидывался внутрь '2' subqr во where
внутрь подзапроса и внутрь group by

Ага, а для тех записей где t2.test1 != 'TEST' выполнялся полный group by ;)
Этого хочется?
JDS
Дата: 26.10.2015 10:53:10
Ничо не понял, но так а чего не засунуть внутрь тогда? )
+
select '1' subqr, ...
from ...
where ...
group by f1, ...
union all
-- 2
select '2' subqr, ...
from ..., t2
where ... f1 = t2.f1 AND t2.test1 = 'TEST'
group by f1, ...
union all
-- 3
select '3' subqr, ...
from ...
where ...
group by f1, ...
JDS
Дата: 26.10.2015 11:05:29
ааа. понял )
nxx
джойнить t2 с каждым подзапросом не очень весело, особенно если их будет 10