首先,让我们除去%sysevalf()
,他们不需要和格式可读性
alter table claims.simulation add Paid_Claims_NoISL float;
update claims.simulation
set Paid_Claims_NoISL
= min(
max(0
, Allowed_Claims -&OOPM
, min(Allowed_Claims
,&Min_Paid+ max(Allowed_Claims - &Deductible * &COINS
,0
)
)
, &Ind_Cap_Claim
)
);
注意,第一min()
只有1个说法。这是导致你的错误。 SAS认为,因为它只有1个输入,所以您想总结一个列,这在更新中是不允许的。
就拿了这一点,它应该工作:
alter table claims.simulation add Paid_Claims_NoISL float;
update claims.simulation
set Paid_Claims_NoISL
= max(0
, Allowed_Claims -&OOPM
, min(Allowed_Claims
,&Min_Paid+ max(Allowed_Claims - &Deductible * &COINS
,0
)
)
, &Ind_Cap_Claim
);
你是不是想使这个'分钟(MAX(0,500-42),0)'或'分钟(MAX(0,500变量),0 )'?你有第二个,但我想知道你是否想要第一个。 – DomPazz
我想要第一个。有很多变量被设置为在程序开始时输入的特定数字,我正在调用这些值本身。因此,表达式将评估为0. – indiansrulz
您是否尝试使用SQL聚合函数'min()'和'max()'或SAS函数'min(,)'和'max(,)'?由于有多个参数,并且文本提到了“汇总”功能,该程序正在使用较晚的版本。 – Tom