【发布时间】:2020-02-25 16:05:06
【问题描述】:
在 SAS Proc SQL 中,我使用此 Case 语句来尝试标记除每年 0.015 之外的差异的策略:
CASE WHEN (MOD1 - MOD0) NOT = .015 THEN 2
WHEN (MOD2 - MOD1) NOT = .015 THEN 3
WHEN (MOD3 - MOD2) NOT = .015 THEN 4
WHEN (MOD4 - MOD3) NOT = .015 THEN 5
ELSE 0 END
奇怪的是,当它觉得它应该起作用时它却不起作用。 (例如 mod1 = .955 和 mod0 = .94 但第一个声明认为它不是 .015)起初我认为这是数字的问题,但从未奏效。
奇怪的是,这确实有效,但我不知道为什么。
CASE WHEN (MOD1 - MOD0) NOT = (1- .985) THEN 2
WHEN (MOD2 - MOD1) NOT = (1- .985) THEN 3
WHEN (MOD3 - MOD2) NOT = (1- .985) THEN 4
WHEN (MOD4 - MOD3) NOT = (1- .985) THEN 5
ELSE 0 END
但这不起作用
CASE WHEN (MOD1 - MOD0) NOT = (.2- .185) THEN 2
WHEN (MOD2 - MOD1) NOT = (.2- .185) THEN 3
WHEN (MOD3 - MOD2) NOT = (.2- .185) THEN 4
WHEN (MOD4 - MOD3) NOT = (.2- .185) THEN 5
ELSE 0 END
我有解决方法来解决任何这些问题(包括使用数据步骤),所以我并不是真的在寻找问题的解决方案,而是寻找更多关于这里发生的事情的答案。我喜欢理解为什么事情不起作用,而不是仅仅知道我能做什么和不能做什么。
谢谢!
【问题讨论】:
-
而解决方案是使用 DECIMAL 数据类型来存储货币信息。
-
@SalmanA SAS 中没有十进制数据类型
标签: sql sas case arithmetic-expressions