我正在运行以下proc sql来提取最大日期。
Proc sql;
Connect to TERADATA (login details);
Create table dates as
Select * from connection to TERADATA
( select max (date1,'2011-12-31') from table1
);
Quit;
Error:
Syntax error: expected something between the word 'date1' and ','
在我做错的地方有人可以帮助我吗?
答案 0 :(得分:1)
在大多数SQL中,max
函数是一个聚合函数,它只接受一个参数然后获取列(或传递给它的任何内容)并从该列中选择最大值。
SAS的不同之处在于它使max
重载也可用作行级功能。
要做到这一点,你可以这样做:
Proc sql;
Connect to TERADATA (login details);
Create table dates as
Select max(date1,'2011-12-31') from connection to TERADATA
( select date1 from table1
);
Quit;
将其从teradata中删除并进入SAS,这样做是合法的。
答案 1 :(得分:0)
如果您使用GREATEST函数并将日期转换为INTEGER,则可以使用Teradata在数据库中进行下推(下推优化):
Proc sql;
Connect to TERADATA (login details);
Create table dates as
Select * from connection to TERADATA
( select GREATEST (CAST(date1 AS INTEGER), CAST(CAST('2011-12-31' AS DATE) AS INTEGER)) from table1
);
Quit;
注意:我将第二个参数双重转换为安全方,即使它以隐式ANSI日期格式传递给Teradata。如果您的日期在表格中可以为空(date1),则COALESCE可能存在一些障碍。