Как адаптировать мой запрос объединения для предоставления консолидированных значений - PullRequest
0 голосов
/ 05 марта 2019

У меня есть запрос ниже.Он определяет размеры всех индексов, лобов и сегментов таблицы для каждой схемы, указанной в «таблице драйверов» ... через ссылку db_link.Кажется, это работает просто отлично, но вместо того, чтобы давать значение для каждой таблицы как «T», каждый индекс как «I» и каждый LOB как «L», я хочу, чтобы он просто давал размер для каждой схемы вместе,Итак, чтобы объединить эти значения в одну сумму.Кто-нибудь может помочь?SQL у меня пока что ниже:

select /*+parallel*/ 'DB1' link,
s.owner,
s.segment_name,
'T' AS FLAG,
sum(s.bytes)/1024/1024 AS SUM_BYTES
from DBA_SEGMENTS@DB1 s
where s.owner = (select distinct productionschema from tables_list_tbl)
and s.segment_name in (select table_name
from tables_list_tbl) and
s.segment_type LIKE '%TABLE%'
group by s.owner, s.segment_name
union all
select 'DB1' link, i.table_owner AS OWNER,
i.table_name AS SEGMENT_NAME,
'I' AS FLAG,
sum(s.bytes)/1024/1024 AS SUM_BYTES
from DBA_SEGMENTS@DB1 s,
DBA_INDEXES@DB1 i
where i.table_owner  = (select distinct productionschema from tables_list_tbl) and
i.table_name in (select table_name
from tables_list_tbl) and
i.owner = s.owner and
i.index_name = s.segment_name and
s.segment_type like '%INDEX%'
group by i.table_owner, i.table_name
union all
select 'DB1' link, l.owner,
l.table_name AS SEGMENT_NAME,
'L' AS FLAG,
sum(s.bytes)/1024/1024 AS SUM_BYTES
from DBA_SEGMENTS@DB1 s,
ALL_LOBS@DB1 l
where l.owner = (select distinct productionschema from tables_list_tbl) and
l.table_name in (select table_name
from tables_list_tbl) and
l.owner = s.owner and
l.segment_name = s.segment_name
group by l.owner, l.table_name
order by 1, 2;
...