2016-05-17 2 views
0

システムは、HPのVertica 7.1にVerticaダイナミックマックスタイムスタンプは、スキーマ内のすべてのテーブルから

私は動的にシステムからDWH_CREATE_TIMESTAMPという名前のタイムスタンプ列を持っている固有のスキーマ内のすべての特定のテーブルを検索しますSQLクエリを作成しようとしていますですテーブル。

次に、このテーブルのリストを外部クエリまたはリスト(200+)のすべてのテーブルからMAX(DWH_CREATE_TIMESTAMP)とTABLE_NAMEを選択する何らかのループステートメントに渡します。すべての結果を1つのリストにまとめることができます。

期待される出力は、そのTSフィールドと各値の最大値を持つすべての前記テーブルを持つ2列テーブルです。テーブルは常に作成され、削除されるので、TABLE_NAMEの値がハードコードされていない場所では、すべてを完全に動的にすることがポイントです。

UDFを使用せずにこれを達成するためのVertica固有の方法については、大変感謝しています。

内部クエリ(作業):

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

1つのSQLでこれを行う方法はありません。あなたは

選択projections.anchor_table_name、vs_ros.colname、MAX(MAX_VALUE)vs_ros、vs_ros_min_max_values、storage_containers、突起vs_ros.colnameのiLikeの 'タイムスタンプ' とvs_rosから値ノード最大タイムスタンプ列については、以下の方法を用いることができる .salstorageid = storage_containers.sal_storage_id とvs_ros_min_max_values.rosid = vs_ros.rosid とprojections.anchor_table_nameによってstorage_containers.projection_name = projections.projection_name 基、vs_ros.colname

関連する問題