[英]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_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的一些引用,但它们无法正常工作。
如果能得到一些帮助,我真的很感激。
提前致谢!!
我认为你需要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.