В 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
У меня есть обходные пути, чтобы обойти любое из них (включая использование шагов с данными), поэтому я не ищу решений длявопрос, но больше ответов о том, что здесь происходит. Мне нравится понимать, почему вещи не работают, а не просто знать, что я могу и не могу сделать.
Спасибо!