使用 Teradata 或 SAS 循环合并

问题描述 投票:0回答:1

我有一个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
提取这些信息?

while-loop sas teradata sas-macro teradatasql
1个回答
0
投票

您似乎在传递 Teradata 代码中使用 SAS 语法。我怀疑 Teradata 是否会让您使用 SAS 的快捷语法进行多重比较。
所以只需扩展它即可。

转换类似的东西

(A op1 B op2 C) 

进入其组成部分。

(A op1 B) and (B op2 C)
© www.soinside.com 2019 - 2024. All rights reserved.