shy*_*y g 8 postgresql if-statement nested case-when
我想在查询条件时写入嵌套大小写,以便存储将来自一个案例的条件和条件变为同一个新列时的另一个案例.为了得到这种结果,我将查询编写为:
(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
Run Code Online (Sandbox Code Playgroud)
在上面的查询demo.name列来自CTE.so我的整个查询看起来像:
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 ;
Run Code Online (Sandbox Code Playgroud)
我只想将(sq_name_new1)列的计数存储到INDIVISUAL列中,将(demo.id)列的计数存储到同一列中,即如果第一种情况不匹配,则在INDIVISUAL中.但是,当我执行我的查询时,它会抛出一个错误.也就是说,条件语法时出现错误.
请帮我写出正确的嵌套case-when条件.
Cra*_*ger 13
CASE ... WHEN ... END是一种表达.它可以像任何其他表达式一样嵌套.
CASE
WHEN condition THEN
CASE
WHEN othercondition THEN
....
END
END
Run Code Online (Sandbox Code Playgroud)
;应删除第一个分号,如@Craig Ringer 的回答所示。
SELECT
CASE WHEN condition1 THEN
CASE
WHEN condition1.1 THEN
...
END
END AS column_name
FROM table_name;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13860 次 |
| 最近记录: |