В общем у меня получилось вот что:
select 'Юридические лица' Балансовый_счет, null Наименование, null Количество_лицевых_счетов
from z#PL_US
where rownum < 2
union all
select 'Кредитные договоры на овердрафты,на транши овердрафтов,договоры на кредитные линии,договоры на транши' Балансовый_счет, null Наименование, null Количество_лицевых_счетов
from z#PL_US
where rownum < 2
union all
select c_NUM Балансовый_счет, c_NAME Наименование, count(c_NAME) Количество_лицевых_счетов
from z#PL_US
where -- [ЮР. ЛИЦА]
--кредитные договоры на овердрафты,на транши овердрафтов,договоры на кредитные линии,договоры на транши
(substr(c_NUM,1,3) in ('441', '442', '443', '444', '445', '446', '447', '448', '449', '450', '451', '452', '443', '454', '456') and substr(c_NUM,1,5)<>'4__15%')
or
(substr(c_NUM,1,3) in ('460', '461', '462', '463', '464', '465', '466', '467', '468', '469', '470', '471', '472', '473') and substr(c_NUM,1,5)<>'4__08%')
group by C_NUM, c_NAME
union all
select 'Депозитные (срочные) договоры' Балансовый_счет, null Наименование, null Количество_лицевых_счетов
from z#PL_US
where rownum < 2
union all -- депозитные (срочные) договоры
select c_NUM Балансовый_счет, c_NAME Наименование, count(c_NAME) Количество_лицевых_счетов
from z#PL_US
where
substr(c_NUM,1,3) in ('410', '411', '412', '413', '414', '415', '416', '417', '418', '419', '420', '421', '422', '425', '427', '428', '429', '430', '431', '432', '433', '434', '435', '436', '437', '438', '439', '440')
group by (c_NUM, c_NAME)
union all
select 'Договоры РКО, договоры пластиковых карт юридических лиц по каждому виду валют' Балансовый_счет, null Наименование, null Количество_лицевых_счетов
from z#PL_US
where rownum < 2
union all --договоры РКО, договоры пластиковых карт юридических лиц по каждому виду валют
select c_NUM Балансовый_счет, c_NAME Наименование, count(c_NAME) Количество_лицевых_счетов
from z#PL_US
where
substr(c_NUM,1,3) in ('401', '402', '403', '404', '405', '406', '407')
or substr(c_NUM,1,5) in ('40802', '40804', '40805', '40806', '40807', '40809', '40811', '40812', '40814', '40815', '40818', '40819', '40821', '40901', '40902', '40903', '40907', '40908', '47401', '47402', '47409', '47410')
group by (c_NUM, c_NAME)
union all
select 'Физические лица' Балансовый_счет, null Наименование, null Количество_лицевых_счетов
from z#PL_US
where rownum < 2
union all
select 'Кредитные договоры на овердрафты,договоры на транши овердрафтов,договоры на кредитные линии,договоры на транши' Балансовый_счет, null Наименование, null Количество_лицевых_счетов
from z#PL_US
where rownum < 2
union all
select c_NUM Балансовый_счет, c_NAME Наименование, count(c_NAME) Количество_лицевых_счетов
from z#PL_US
where -- [ФИЗ.ЛИЦА]
--кредитные договоры на овердрафты,договоры на транши овердрафтов,договоры на кредитные линии,договоры на транши
substr(c_NUM,1,3) in ('455', '457') and substr(c_NUM,1,5)<>'4__15'
group by (c_NUM, c_NAME)
union all
select 'Депозитные договоры' Балансовый_счет, null Наименование, null Количество_лицевых_счетов
from z#PL_US
where rownum < 2
union all --депозитные договоры
select c_NUM Балансовый_счет, c_NAME Наименование, count(c_NAME) Количество_лицевых_счетов
from z#PL_US
where
substr(c_NUM,1,3) in ('423', '426')
group by (c_NUM, c_NAME)
union all
select 'Счета физических лиц ' Балансовый_счет, null Наименование, null Количество_лицевых_счетов
from z#PL_US
where rownum < 2
union all --Счета физических лиц
select c_NUM Балансовый_счет, c_NAME Наименование, count(c_NAME) Количество_лицевых_счетов
from z#PL_US
where
substr(c_NUM,1,5) in ('40803', '40810', '40813', '40817', '40820')
group by (c_NUM, c_NAME)
union all
select null Балансовый_счет, 'Итого лицевых счетов:' Наименование, count(c_NAME)
from z#PL_US
where -- [ЮР. ЛИЦА]
--кредитные договоры на овердрафты,на транши овердрафтов,договоры на кредитные линии,договоры на транши
substr(c_NUM,1,3) in ('441', '442', '443', '444', '445', '446', '447', '448', '449', '450', '451', '452', '443', '454', '456') and substr(c_NUM,1,5)<>'4__15'
or
( substr(c_NUM,1,3) in ('460', '461', '462', '463', '464', '465', '466', '467', '468', '469', '470', '471', '472', '473') and substr(c_NUM,1,5)<>'4__08')
-- депозитные (срочные) договоры
or
substr(c_NUM,1,3) in ('410', '411', '412', '413', '414', '415', '416', '417', '418', '419', '420', '421', '422', '425', '427', '428', '429', '430', '431', '432', '433', '434', '435', '436', '437', '438', '439', '440')
--договоры РКО, договоры пластиковых карт юридических лиц по каждому виду валют
or
substr(c_NUM,1,3) in ('401', '402', '403', '404', '405', '406', '407')
or substr(c_NUM,1,5) in ('40802', '40804', '40805', '40806', '40807', '40809', '40811', '40812', '40814', '40815', '40818', '40819', '40821', '40901', '40902', '40903', '40907', '40908', '47401', '47402', '47409', '47410')
-- [ФИЗ.ЛИЦА]
--кредитные договоры на овердрафты,договоры на транши овердрафтов,договоры на кредитные линии,договоры на транши
or
substr(c_NUM,1,3) in ('455', '457') and substr(c_NUM,1,5)<>'4__15'
--депозитные договоры
or
substr(c_NUM,1,3) in ('423', '426')
--Счета физических лиц
or
substr(c_NUM,1,5) in ('40803', '40810', '40813', '40817', '40820')
Заказчик очень хотел, чтобы были названия каждых пунктов, а тут без union-ов никак