SAS DI错误22-232在第_行()中超过(按构造分区

SAS DI错误22-232在第_行()中超过(按构造分区,sas,teradata,partition,row-number,data-integration,Sas,Teradata,Partition,Row Number,Data Integration,我有两个SQL连接转换(一个只使用SELECT,另一个使用SELECT和WHERE),在提交以下代码时,我在附近有语法错误: select row_number () over ( partition by t0.A order by t0.B DESC ) nub, t0.C, t0.D from t0 我是SAS DI Studio的新手,但这段代码在Teradata中运行,我哪里出了问题?首先,我可以告诉您发

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

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

我是SAS DI Studio的新手,但这段代码在Teradata中运行,我哪里出了问题?

首先,我可以告诉您发生此错误的原因,但可能需要有权访问DI Studio的人为您提供完整的答案。我已尽了最大努力在下面进行解释。请随意评论

SAS SQL中不支持Teradata SQL中的
行号()
分区依据
构造。为了适应DI Studio中的这种语法,您需要使用“传递”SQL。基本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\u table
的SAS表

根据您的DI Studio版本,可能有一个特定的转换可用于直通SQL