0

我正在将 SAS 代码转换为 Cognos Report Studio 版本 10,在该版本中卡在需要数据格式化的地方。

IF SDW_STAT ^= '' THEN PRINCIPAL_BAL = TOT_PRIN;

其中 '' 代表不带空格的单引号

我试着写一个CASE STATEMENT

CASE 
WHEN ([SDW_STAT] IS NOT MISSING) THEN ([PRINCIPAL_BAL] = [TOT_PRIN])
ELSE ('') 
END

我还尝试了几个选项,例如<> '', is not null, <> ' '代替,IS NOT MISSING但没有一个有效。你能建议我哪里出错了吗?请注意:SDW_STAT 列有几个空白字段和​​一些字符,如 'Y' 'S' 等。

4

2 回答 2

3

尝试将列放在CASE语句之外:

PRINCIPAL_BAL = 
    CASE 
        WHEN COALESCE(SDW_STAT,'') <> '' THEN TOT_PRIN 
        ELSE PRINCIPAL_BAL 
    END

从逻辑上讲,当 sdw_stat 不等于空白或 null 时,这会将 principal_bal 更新为 tot_prin。如果它是空白的,那么它只会将其更新为自身。

于 2014-05-27T14:30:56.893 回答
0

问题很可能是 ELSE 语句。您的 THEN 子句是一个等式。这将返回一个布尔值,truefalse。你的 else 正在返回一个字符串。这些类型不兼容。您可以通过将 ELSE 更改为:

ELSE (false)

我的猜测是数据类型错误会消失。

你能详细说明你在哪里使用这个代码吗?它是在数据项中还是在过滤器中?根据使用表达式的位置,有不同的规则。

注意:我会直接评论这个问题,但我是新手,还没有能力。

于 2014-05-30T20:50:54.327 回答