je veux écrire un cas imbriqué lorsque la condition dans la requête pour stocker la valeur qui proviendra d'un cas lorsque la condition et d'un autre cas lorsque la condition dans la même nouvelle colonne.pour obtenir ce type de résultat, j'écris la requête comme suit:
(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
dans la colonne ci-dessus, le nom demo.name provient de CTE. donc toute ma requête ressemble à:
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 ;
je veux juste stocker le nombre de colonnes (sq_name_new1) dans la colonne INDIVISUAL et le nombre de colonnes (demo.id) dans la même colonne, c'est-à-dire INDIVISUAL, si la première condition de cas ne correspond pas. mais lorsque j'exécute ma requête, cela génère une erreur. C'est-à-dire que quelque chose ne va pas dans la syntaxe de case when condition.
s'il vous plaît, aidez-moi à écrire la condition de cas imbriquée correcte.
CASE ... WHEN ... END
est une expression. Il peut être imbriqué comme n'importe quelle autre expression.
CASE
WHEN condition THEN
CASE
WHEN othercondition THEN
....
END
END
Le premier point-virgule ;
devrait être supprimé comme dans la réponse de @Craig Ringer.
SELECT
CASE WHEN condition1 THEN
CASE
WHEN condition1.1 THEN
...
END
END AS column_name
FROM table_name;