繁体   English   中英

如何从oracle架构中包含该列名的所有表表中获取特定列的最大值?

[英]How to get the max value for a specific column from all tables tables which contains that column name in an oracle schema?

我有一个包含5000个表的Oracle模式,我检索了列名为updt_dt_tmupdt_dt_time所有表。 现在我想要一个额外的列,它给出了updt_dt_tmupdt_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循环遍历所有表并从特定列获取最大值

获取列的最大值,同时获取特定记录的同一列

如果能得到一些帮助,我真的很感激。

提前致谢!!

我认为你需要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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM