Sas “as”处的cast语句和“as”处的别名中的PROC SQL引发错误

Sas “as”处的cast语句和“as”处的别名中的PROC SQL引发错误,sas,Sas,此语句在SQL中工作正常,但在proc SQL中的“as”处都会引发错误 CAST不是有效的SAS SQL函数。使用适当的SAS SQL函数(在本例中可能是INT)将计算转换为整数值 如果您想使用DB SQL,则需要使用SAS SQL Pass-Through,它将代码直接传递到数据库,但整个查询必须在该数据库上有效 SAS对每个字段都有属性,如长度、格式、信息。它们帮助存储、读取和读取数据源 您的PROC-SQL不需要类型转换。而是使用FORMAT语句 PROC SQL; SELECT end

此语句在SQL中工作正常,但在proc SQL中的“as”处都会引发错误

CAST不是有效的SAS SQL函数。使用适当的SAS SQL函数(在本例中可能是INT)将计算转换为整数值

如果您想使用DB SQL,则需要使用SAS SQL Pass-Through,它将代码直接传递到数据库,但整个查询必须在该数据库上有效

SAS对每个字段都有属性,如长度、格式、信息。它们帮助存储、读取和读取数据源

您的PROC-SQL不需要类型转换。而是使用FORMAT语句

PROC SQL;
SELECT end_dt-start_dt as EXPOSURE,
 (CASE WHEN (EXPOSURE)<0 THEN 0 ELSE CAST(TRUNC((EXPOSURE)/30+0.99) as 
INTEGER)  END as bucket) FROM TABLE

不确定整个语句的语法,因为我无法测试它,尽管整个想法是正确的

今后,请至少包括您的错误/日志以及允许我们复制问题的数据。您可能会有多个错误,这取决于,我已经回答了下面最可能出现的问题。
PROC SQL; SELECT end_dt-start_dt as EXPOSURE, CASE WHEN (EXPOSURE)<0 THEN 0 ELSE INT(TRUNC((EXPOSURE)/30+0.99)) END as bucket Format 8. FROM TABLE