我有2个SQL连接变换(一个只使用SELECT
,另一个使用SELECT
和WHERE
)我在提交以下代码时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,我哪里错了?
答案 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的特定转换。