两个日期之间的最大日期 teradata
Max date between two dates teradata
我运行下面的程序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 ','
谁能帮我看看哪里做错了?
在大多数 SQL 中,max
函数是一个聚合函数,它只接受一个参数,然后获取列(或传递给它的任何内容)并选择最大值来自该专栏。
SAS 的不同之处在于它重载了 max
也可以用作 row-level 函数。
要做到这一点,您可以这样做:
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 中,这样做是合法的。
如果您使用 GREATEST 函数并将日期转换为 INTEGER,则可以使用 Teradata 执行此操作 in-database(下推优化):
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。如果您的日期在 table (date1) 中可以为空,则 COALESCE 可能存在一些障碍。
我运行下面的程序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 ','
谁能帮我看看哪里做错了?
在大多数 SQL 中,max
函数是一个聚合函数,它只接受一个参数,然后获取列(或传递给它的任何内容)并选择最大值来自该专栏。
SAS 的不同之处在于它重载了 max
也可以用作 row-level 函数。
要做到这一点,您可以这样做:
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 中,这样做是合法的。
如果您使用 GREATEST 函数并将日期转换为 INTEGER,则可以使用 Teradata 执行此操作 in-database(下推优化):
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。如果您的日期在 table (date1) 中可以为空,则 COALESCE 可能存在一些障碍。