我有一个Teradata数据表,ID超过60MM,期限为三年。这意味着相同的 ID 将在三年内重复出现。我正在寻找一个可以使用 ID 循环的宏,直到开始日期和结束日期相同的最后一条记录。
我有一段 SAS 代码来定义上下 ID 以将其用作过滤器
%macro loopmerge(n);
%do i=1 to &n.
data _null_;
call symputx('lower',%eval(&i-1)*25000000
call symputx('upper',%eval(&i)*25000000
Proc Sql;
Connect to teradata (XXXXXXX);
Create table DataTable as
select * from connection to teradata
(Select ID,VAR1,VAR2
From MyTable
where Date between '2021-01-01' and '2023-12-31'
and (&lower lt ID le &upper)
);
Quit;
%mend;
这没有按我的预期工作并抛出错误。有没有办法可以使用
Teradata Macros
提取这些信息?
您似乎在传递 Teradata 代码中使用 SAS 语法。我怀疑 Teradata 是否会让您使用 SAS 的快捷语法进行多重比较。
所以只需扩展它即可。
转换类似的东西
(A op1 B op2 C)
进入其组成部分。
(A op1 B) and (B op2 C)