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中正常工作但在'as'中的proc sql中抛出错误。
答案 0 :(得分:1)
CAST不是有效的SAS SQL函数。使用适当的SAS SQL函数(在本例中为INT())将计算转换为整数值。
如果您想使用DB SQL,则需要使用SAS SQL Pass Through将代码直接传递到数据库,但整个查询必须在该数据库上有效。
答案 1 :(得分:0)
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
整个陈述的不确定或语法,因为我无法测试它,尽管整个想法都是正确的。