У меня есть отчет, в котором используется дюжина CTE и длится долго, чтобы выполнить. Дело в том, что многие из этих КТР используют одни и те же таблицы, соединенные таким же образом, но на разных условиях, в зависимости от колонки:Как избежать двух аналогичных определений CTE
WITH
Kps_CTE (sp_id,ksd_ma_s) As
(
select wir_sp_id,SUM(ksd_ma)
from ksd
inner join ks on ksd_ks_id=ks_id
inner join do ON ksd_do_id=do_id AND do_dot_id in (101)
inner join wi ON do_wi_id=wi_id
inner join wir ON wir_wi_id=wi_id
INNER JOIN sp ON wir_sp_id=sp_id
where ksd_ksk_id=13
AND sp_date >= '2013-01-01'
group by wir_sp_id
),
Kis_CTE (sp_id,ksd_wn_s) As
(
select wir_sp_id,SUM(ksd_wn)
from ksd
inner join ks on ksd_ks_id=ks_id
inner join do ON ksd_do_id=do_id AND do_dot_id in (4)
inner join wi ON do_wi_id=wi_id
inner join wir ON wir_wi_id=wi_id
INNER JOIN sp ON wir_sp_id=sp_id
where ksd_ksk_id=14
AND sp_date>= '2013-01-01'
group by wir_sp_id
)
select * from ...
Так что сейчас я получаю только два столбца на каждую таблицу. Я хотел бы избежать повторного объединения одних и тех же таблиц и создания нескольких столбцов в одном CTE с использованием разных условий. Это возможно? Если я просто присоединяюсь к этим двум, я не буду экономить много ресурсов.