在postgresql中当case语句为true时添加条件

在postgresql中当case语句为true时添加条件,sql,postgresql,case,Sql,Postgresql,Case,我有一个查询,当case语句为true时,我需要将条件放在哪里。我尝试过这样做,但没有找到正确的值 SELECT name,count(CASE WHEN date_part('year',time_stamp) = 2016 THEN answ_count end) AS Year15 FROM companies companies where (CASE when no_answer='f' then value_s IS not NULL o

我有一个查询,当case语句为true时,我需要将条件放在哪里。我尝试过这样做,但没有找到正确的值

SELECT
    name,count(CASE WHEN date_part('year',time_stamp) = 2016 THEN answ_count end) AS Year15 
FROM 
        companies companies 
where 

    (CASE when no_answer='f' then value_s IS  not  NULL or value_n IS  not  NULL end )

CASE
是一个表达式,您只能在
THEN
部分之后指定一个值,而不是像您那样的条件
THEN value不为NULL
您不能这样使用CASE

很难弄清楚您想做什么,但是测试案例的结果,而不是将测试放在案例中,如下所示:

...
where CASE when no_answer='f' then value_s else value_n end
  IS not NULL

这是一个case表达式,不是case语句…您希望得到什么?还有这个错误:case类型integer和text不能匹配第27行:。。。(如果没有答案,则dp_valu…)没有错误,但结果与我发布的第一个查询相同,然后我会再次问你,你得到了什么?你希望得到什么?让我们来看看。我要添加的条件就像没有答案,则它应该检查值s或值n是否为null,不应该检查该条件
...
where CASE when no_answer='f' then value_s else value_n end
  IS not NULL