PROC SQL 在 'as' 处的强制转换语句和在'as'处的别名中抛出错误


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

此语句在 SQL 中工作正常,但在 proc sql 中两个"as"都抛出错误。

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

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

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

您的PROC SQL不需要类型转换。请改用 FORMAT 语句。

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

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

最新更新