系统是HP VERTICA 7.1
我正在尝试创建一个SQL查询,该查询将动态查找特定架构中具有系统表中名为DWH_CREATE_TIMESTAMP的Timestamp列的所有特定表。 (我已成功完成此部分)
然后,将此表列表传递给外部查询或某种循环语句,该语句将从列表中的所有表(200+)中选择MAX(DWH_CREATE_TIMESTAMP)和TABLE_NAME,并将所有结果合并为一个列表
预期输出是一个2列表,其中所有表具有该TS字段和每个值的最大值。表格不断被创建和删除,所以关键是要使所有内容完全动态,而没有任何TABLE_NAME值被硬编码。
任何了解Vertica在没有UDF的情况下实现此目标的方法都将非常感激。
内部查询(工作):
select distinct(table_name)
from columns
where column_name = 'DWH_CREATE_TIMESTAMP'
and table_name in (select DISTINCT(table_name) from all_tables where schema_name = 'PTG_DWH')
外部查询(尝试 - 不工作):
SELECT Max(DWH_CREATE_DATE) from
WITH table_name AS (
select distinct(table_name)
from columns
where column_name = 'DWH_CREATE_DATE' and table_name in (select DISTINCT(table_name) from all_tables where schema_name = 'PTG_DWH'))
SELECT MAX(DWH_CREATE_DATE)
FROM table_name
感谢!!!
答案 0 :(得分:0)
无法在一个SQL中执行此操作。 您可以将以下方法用于节点最大时间戳列值
从vs_ros中选择projection.anchor_table_name,vs_ros.colname,max(max_value),vs_ros_min_max_values,storage_containers,投影,其中vs_ros.colname ilike' timestamp' 和vs_ros.salstorageid = storage_containers.sal_storage_id 和vs_ros_min_max_values.rosid = vs_ros.rosid 和storage_containers.projection_name = projections.projection_name 按projection.anchor_table_name,vs_ros.colname
分组