動的に生成されたSQLをTeradataに送信する方法はありますか?テーブルを非正規化するコードを作成するクエリを作成しました。現在、コードをクライアント(SAS)にプルダウンし、2番目のステップで再送信しています。私はTeradataマクロまたはプロシージャのどちらにも精通していません。そのようなものは機能しますか?
説明のために、次のように定義されたテーブルがあります。
create multiset table MYTABLE
( RECID integer generated always as identity
( start with 1
increment by 1
minvalue -2147483647
maxvalue 2147483647
no cycle )
, SNAP_DATE date format 'YYYY/MM/DD'
, EMAIL_DATE date format 'YYYY/MM/DD'
, FREQ integer
)
unique primary index ( RECID )
このテーブルは毎日入力され(SNAP_DATE
)、別のテーブルのemail_dateへの変更を監視するために使用されます。次のクエリは、非正規化ビューを作成するために実行できるコードを返します。
select RUN_THIS
from (
select RUN_THIS, RN
from (
select 'select EMAIL_DATE ' (varchar(100)) as RUN_THIS
, 0 (int) as RN
) x
union all
select ', sum( case when SNAP_DATE = date '''
|| (SNAP_DATE (format 'yyyy-mm-dd') (char(10)) )
|| ''' then FREQ else 0 end ) as D'
|| (SNAP_DATE (format 'yyyymmdd') (char(8)) ) as RUN_THIS
, row_number() over ( partition by 1 order by SNAP_DATE ) as RN
from ( select distinct SNAP_DATE
from MYTABLE
where SNAP_DATE > current_date - 30) t1
union all
select RUN_THIS, RN
from (
select 'from MYTABLE group by 1 order by 1;' as RUN_THIS
, 10000 as RN
) y
) t
order by RN
上記のクエリの結果をクライアント上のファイルにエクスポートしてから、向きを変えてそのファイルをTeradataに送信します。この完全な定義をTeradataオブジェクトに保存して、直接実行できるようにする方法があることを願っています。