Передача данных из одной таблицы в код блока - Oracle - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть таблица дат_2019 со всеми датами дней недели 2019 года, как показано ниже: -

TS_RANGE_BEGIN      |TS_RANGE_END
2019-01-01 17:00:00 |2019-01-02 17:00:00
2019-01-02 17:00:00 |2019-01-03 17:00:00
2019-01-03 17:00:00 |2019-01-04 17:00:00
2019-01-04 17:00:00 |2019-01-07 17:00:00
2019-01-07 17:00:00 |2019-01-08 17:00:00
2019-01-08 17:00:00 |2019-01-09 17:00:00

Мой запрос на вставку, как показано ниже: -

insert into report_2019(ab,app_name,status,sub_count,category,last_modified_timestamp)
with T as (
select id,ab,app_name,status,trunc(last_modified_timestamp),
     row_number() over(partition by id, ab order by p_message_id desc, message_id desc) lastest_status_order_id
          ,p_message_id
         ,LAST_MODIFIED_TIMESTAMP,reporting_purpose
from (
    select
     id,
     ab 
     , app_name,
 status
    ,p.message_id p_message_id
       ,s.message_id
    ,s.LAST_MODIFIED_TIMESTAMP, reporting_purpose
    from table_a s, table_b d, table_c k, table_d t,
        table_e p
    where s.LAST_MODIFIED_TIMESTAMP > to_timestamp('2019-01-01 17', 'YYYY-MM-DD HH24')
and s.LAST_MODIFIED_TIMESTAMP <= to_timestamp('2019-01-02 17', 'YYYY-MM-DD HH24')
    and .....
  ) a
)
select * from (
 select ab, app_name, status, count(*) subtotal, 
'Reporting' as v_category,trunc(last_modified_timestamp)
 from T  where lastest_status_order_id = 1
 and LAST_MODIFIED_TIMESTAMP <= to_timestamp('2019-01-02 17', 'YYYY-MM-DD HH24')
 group by ab,app_name,status,trunc(last_modified_timestamp))a order by ab, app_name;

Первоначальная идея состояла в том, чтобы присоединиться обе таблицы date_2019 и T и получают результаты за весь год, как показано ниже: -

where s.LAST_MODIFIED_TIMESTAMP > c.ts_range_begin
and s.LAST_MODIFIED_TIMESTAMP <= c.ts_range_end
....

Однако временное табличное пространство низкое, и я получил следующие ошибки: -

[Код ошибки: 12801, SQL Состояние: 72000] ORA-12801: ошибка на параллельном сервере запросов. P004 ORA-01555: снимок слишком старый: сегмент отката с номером 30 с именем «_SYSSMU30_326584413 $» слишком мал

Теперь можно вставлять данные по одному блоку за один день. Не могли бы вы помочь мне с решением?

Спасибо,

...