我需要为每个“Tecnico”计算“Estado de solicitud”,我的意思是,对于每个“Tecnico”我有多少“Abiertos”或“En espera”
这是我的
SELECT ti.FIRST_NAME AS "Técnico", std.STATUSNAME AS "Estado de solicitud"
FROM WorkOrder wo
LEFT JOIN WorkOrderStates wos ON wo.WORKORDERID=wos.WORKORDERID
LEFT JOIN SDUser td ON wos.OWNERID=td.USERID
LEFT JOIN AaaUser ti ON td.USERID=ti.USER_ID
LEFT JOIN StatusDefinition std ON wos.STATUSID=std.STATUSID
WHERE ( std.STATUSID != 3 ) AND (std.STATUSID != 4)
最佳答案
您可以使用条件聚合来做到这一点:
SELECT ti.FIRST_NAME AS "Técnico",
COUNT(*) FILTER (WHERE std.STATUSNAME = 'Abierto') as abiertos,
COUNT(*) FILTER (WHERE std.STATUSNAME = 'En Espera') as en_esperas
FROM WorkOrder wo LEFT JOIN
WorkOrderStates wos
ON wo.WORKORDERID = wos.WORKORDERID LEFT JOIN
SDUser td
ON wos.OWNERID = td.USERID LEFT JOIN
AaaUser ti
ON td.USERID = ti.USER_ID LEFT JOIN
StatusDefinition std
ON wos.STATUSID = std.STATUSID
WHERE std.STATUSID NOT IN (3, 4)
GROUP BY ti.FIRST_NAME
关于mysql - 如何在 postgres 的这个查询中使用函数计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56498737/