两个日期之间的最大日期 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 可能存在一些障碍。