在postgresql中当case语句为true时添加条件
我有一个查询,当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
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