SAS DI错误22-232在ROW_NUMBER()OVER(PARTITION BY构造

时间:2014-11-28 10:47:12

标签: sas teradata partition row-number data-integration

我有2个SQL连接变换(一个只使用SELECT,另一个使用SELECTWHERE)我在提交以下代码时OVER附近有语法错误:

select row_number () over 
       (
         partition by t0.A order by t0.B DESC
       ) nub, 
       t0.C, 
       t0.D
from t0

我是SAS DI Studio的新手,但这段代码适用于Teradata,我哪里错了?

1 个答案:

答案 0 :(得分:1)

首先,我可以说明为什么会出现此错误,但可能会有权访问DI Studio以便为您完全回答。我已尽力在下面解释。随意评论。

SAS SQL不支持Teradata SQL中的ROW_NUMBER()PARTITION BY构造。为了在DI Studio中使用这种语法,您需要利用“传递”和“传递”。 SQL。 Base SAS中的语法如下:

PROC SQL;
  CONNECT TO TERADATA (/* Insert connection details */);
  CREATE TABLE sas_table AS
  SELECT * FROM CONNECTION TO TERADATA (
  /* Insert your Teradata SQL here */
  );
  DISCONNECT FROM TERADATA;
QUIT;

上面的语法将连接到Teradata,然后根据Teradata SQL查询的结果创建一个名为sas_table的SAS表。

根据您的DI Studio版本,可能会有针对Pass Through SQL的特定转换。