Как получить максимальное значение для конкретного столбца из всех таблиц таблиц, который содержит имя этого столбца в схеме оракула? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть схема Oracle с 5000 таблицами, и я получил все таблицы с именами столбцов updt_dt_tm и updt_dt_time. Теперь я хочу дополнительный столбец, который дает мне максимум этого столбца updt_dt_tm или updt_dt_time, который является столбцом отметки времени.

В настоящее время моя восстановленная таблица выглядит в этом формате.

table_name column_name 1 updt_dt_tm 2 updt_dt_tm 3 updt_dt_time 4 updt_dt_tm 5 updt_dt_time 6 updt_dt_tm

Чтобы получить приведенную выше таблицу, это мой запрос, который прост.

select table_name, column_name from all_tab_columns where column_name='updt_dt_tm' or column_name='updt_dt_time' and owner = schema_name.

Я пытаюсь получить таблицу, которая выглядит как

table_name column_name value 1 updt_dt_tm max(updt_date_tm) 2 updt_dt_tm max(updt_date_tm) 3 updt_dt_time max(updt_date_time) 4 updt_dt_tm max(updt_date_tm) 5 updt_dt_time max(updt_date_time) 6 updt_dt_tm max(updt_date_tm)

Я попробовал несколько ссылок из StackOverflow, но они не работают.

Цикл SQL по всем таблицам и получение максимального значения из определенного столбца

получить максимальное значение для столбца и того же столбца для конкретной записи одновременно

Буду очень признателен, если смогу получить помощь.

Заранее спасибо !!

1 Ответ

0 голосов
/ 30 марта 2019

Я думаю, вам нужен plsql для достижения этой цели. Примерно так:

declare
cursor c_tab is
select table_name, column_name 
from all_tab_columns 
where (column_name='updt_dt_tm' or column_name='updt_dt_time') 
and owner = schema_name;

v_sql varchar2(32000);

begin
    for r_tab in c_tab loop
       v_sql := 'select ' || 
                r_tab.table_name || ' table_name, ' || 
                r_tab.column_name || ' column_name, ' || 
                '(select max(' || r_tab.column_name || ') from ' || r_tab.table_name || ') value ' ||
                'from dual';
        execute immediate v_sql;                
    end loop;
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...