postgresql - Postgres案例查询问题

标签 postgresql case

我正在尝试编写一个带有 CASE 语句的 postgres 查询。查询如下:

SELECT "State" AS x, count("Age Group") AS y from test.smp_state_survey where "State" IN 
(CASE 
        WHEN 'State' = 'State' THEN 'State 1','State 2','State 3'
        WHEN 'State' = 'District' THEN 'State 1'
    END) 
  group by x ORDER BY x,y 

上面的查询在 'State' = 'State' 处显示语法错误

然而,当我执行以下查询时,我得到了适当的结果:

SELECT "State" AS x, count("Age Group") AS y from test.smp_state_survey where "State" IN 
(CASE 
        WHEN 'State' = 'State' THEN 'State 1'
        WHEN 'State' = 'District' THEN 'State 1'
    END) 
  group by x ORDER BY x,y 

请让我知道我做错了什么。

编辑:

THEN 子句后的值是动态的,它可能包含 1 个或多个值(来自多选框)。我希望查询执行为

SELECT "State" AS x, count("Age Group") AS y from test.smp_state_survey where "State" IN 
('State 1','State 2','State 3') 
  group by x ORDER BY x,y 

运行得很好,但问题是 CASE 没有返回我需要的字符串。

最佳答案

你的查询应该是这样的,我希望这对你有用

SELECT  "State" AS x, count("Age Group") AS y from test.smp_state_survey where  
CASE  
        WHEN 'State' = 'State'  THEN  "State" IN  ('State 1' ,'State 3')
        WHEN 'State' = 'District' THEN "State" IN  ('District 1')
    END
  group by x ORDER BY x,y 

关于postgresql - Postgres案例查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13303183/

相关文章:

MySQL返回大小写值

sql - Access 2010 中正确的 CASE SELECT 语句是什么?

sql - 错误 : permission denied for sequence cities_id_seq using Postgres

sqlite - 导入后更新 SERIAL 值

php - 如何改变php中字符串的大小写?密码到密码?

MySQL 错误 : column cannot be null in update query

if-statement - 二郎: nested cases

python - 转换 Pandas 中列中的行

java - 如何在没有 openshift CLI 的情况下定义 WildFly 可启动 JAR 的数据源属性?

postgresql - 带有 PostgreSQL 后端的数据库 secret 引擎的 vault PostgreSQL 插件如何工作?