Как использовать функцию count в этом запросе в postgres - PullRequest
0 голосов
/ 07 июня 2019

Мне нужно посчитать "Estado de solicitud" для каждого "Tecnico", то есть для каждого "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)

This is the result for the query

And something like this is that I need

1 Ответ

2 голосов
/ 07 июня 2019

Вы можете сделать это с помощью условного агрегирования:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...