首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在postgresql查询中放置嵌套的case-when条件

如何在postgresql查询中放置嵌套的case-when条件
EN

Stack Overflow用户
提问于 2016-11-24 13:11:10
回答 2查看 28.4K关注 0票数 22

我想在查询中编写嵌套case when条件,以存储来自一个case when条件的值,以及将来自另一个case when条件的值存储到相同的新column.to中,从而获得这种结果。我将查询写为:

代码语言:javascript
复制
(case when sq_name_new1 like format('%%%s%%',demo.name) THEN count(sq_name_new1) else (when demo.empcode is not null then count(demo.id) End) END) AS indivisual from res_scheduledjobs

在上面的来自CTE.so的查询demo.name列中,我的整个查询如下所示:

代码语言:javascript
复制
with demo(empcode,id,name) as               
(select hr_employee.emp_code,hr_employee.id,concat(resource_resource.name,' ',hr_employee.middle_name,' ',hr_employee.last_name) as name from hr_employee inner join  resource_resource on resource_resource.id=hr_employee.resource_id)
select demo.empcode,demo.name,sq_name_new1,(case when sq_name_new1 like format('%%%s%%',demo.name) THEN count(sq_name_new1) else (when demo.empcode is not null then count(demo.id) End) END) AS indivisual from res_scheduledjobs LEFT JOIN demo on demo.id=res_scheduledjobs.assigned_technician group by res_scheduledjobs.assigned_technician,sq_name_new1,demo.empcode,demo.name ;

如果第一个条件不匹配,我只想将(sq_name_new1)列的计数存储到独立可视列中,并将(demo.id)列的计数存储到同一列中。但是当我执行我的查询时,它抛出了一个error.that is,case when条件的语法中有一些错误。

请帮我写出正确的嵌套case-when条件。

EN

回答 2

Stack Overflow用户

发布于 2016-11-24 13:43:44

CASE ... WHEN ... END是一个表达式。它可以像任何其他表达式一样嵌套。

代码语言:javascript
复制
CASE
     WHEN condition THEN
         CASE
             WHEN othercondition THEN
                 ....
         END
END
票数 35
EN

Stack Overflow用户

发布于 2018-03-09 21:23:32

第一个分号;应该删除,就像@Craig Ringer的答案一样。

代码语言:javascript
复制
SELECT 
  CASE WHEN condition1 THEN
    CASE
      WHEN condition1.1 THEN
        ...
    END
  END AS column_name
FROM table_name;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40778444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档