首先,讓我們除去%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