Для
Rsa97 Rsa97 Разделите на отдельные запросы, легче будет
Зачем разделять на под-запросы? Если таблица большая будет, то N-ое количество раз тянуть - плохо. Да и легче не будет
И сократите кучу OR'ов на
(c_NUM >= 44100 AND c_NUM < 45700)
и это тоже на мой взгляд ужасное решение. все равно их будет много
лучше такое:
substr(c_NUM,1,3) in ('441', '442', ...)
?
------------------
Один раз тянется вся таблица, далее используем полученные данные для вывода.
Разбирайся, улучшай.
select c_NUM
, cnt
from (
with tab as (select substr(c_NUM,1,3) c_NUM
, count(1) cnt
from z#PL_US
where substr(c_NUM,1,3) in ('441', '442', ...
,'410', '411', ...
)
group by substr(c_NUM,1,3)
)
select 1 sort , c_NUM, CNT
from tab
where c_NUM in ('441', '441')
union
select 2 sort , c_NUM, CNT
from tab
where c_NUM in ('410', '411', ...)
union
select 3 sort ,'ИТОГО П.1: ', sum(cnt)
from tab
where c_NUM in ('441', '441', ....)
union
select 4 sort ,'ИТОГО П.2: ', sum(cnt)
from tab
where c_NUM in ('410', '411', ...)
order by sort
)