Dynami c выберите таблицу в терадате - PullRequest
0 голосов
/ 06 марта 2020

Я новичок в teradata, я пытаюсь создать динамическую таблицу c в teradata. Я создал этот код, но есть много ошибок. Помощь оценена!

Текущий код вручную:

select a_num,id from tablename union
select a_num,id from tablename_1912 union
select a_num,id from tablename_2001

Примечание: 1912, 2001 должно быть динамически c

Ожидается :

select a_num,id from tablename union 
select a_num,id from tablename_1912(dynamically change) union    
select a_num,id from tablename_2001(dynamically change)

Мой код:

create procedure test_sp()
Create volatile table test(Account Number varchar(50),Id varchar(30) on commit preserve rows;

Begin 

Declare SQLL varchar(max);
Declare Schema_name_1 varchar(20);
Declare Schema_name_2 varchar(20);
Declare table_name varchar(30);
Declare underscore varhcar(10),
Declare 3_months_previous varchar(50);
Declare 2_months_previous varchar(50);

set schema_name_1 = 'Some_Schema_name1';
set schema_name_2 = 'Some_Schema_name2';
set table_name = 'test';
set 3_months_previous = substr(add_months(current_date,-3),3,2)||substr(add_months(current_date,-3),6,2);
set 2_months_previous = substr(add_months(current_date,-2),3,2)||substr(add_months(current_date,-2),6,2);
set underscore  = '_';
set SQLL = 'select A_Num,''11''+ from '+Schema_name_1+table_name+ ' union all '+
           'select B_Num,''22''+ from '+Schema_name_2+table_name+ ' union all '+
           'select A_Num,''23''+ from '+Schema_name_1+table_name+underscore+3_months_previous ' union all '+
           'select B_Num,''24''+ from '+Schema_name_2+table_name+underscore+2_months_previous ;

End;

insert into test
call test_sp();

select * from test t join another_Table c on t.a_num=c.p_num
...