CASE STATEMENT中的数据类型不兼容

时间:2014-05-27 14:26:17

标签: sql cognos cognos-bi cognos-10

我正在将SAS代码转换为Cognos Report Studio版本10,其中卡在需要数据格式的位置。

IF SDW_STAT ^= '' THEN PRINCIPAL_BAL = TOT_PRIN;

哪里'' represnts单引号,没有任何空格

我尝试写一个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&#39; &#39; S&#39;等

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

来测试
ELSE (false)

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

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

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