The code below returns the number of dialed and the number of answered, but when adding the CASE
to bring me the number of faults it separates the line from the answered ones from the line of the defaulters, this all on account of group by
that has to be done with the IAC.TP_PRESENCA_FALTA
column.
How do I prevent this from happening?
SELECT
TRUNC(AC.DT_AGENDA) AS DATA_AGENDA,
ME.DS_MULTI_EMPRESA AS EMPRESA,
AC.CD_UNIDADE_ATENDIMENTO AS CD_UNID_ATENDIMENTO,
UA.DS_UNIDADE_ATENDIMENTO AS UNIDADE_ATENDIMENTO,
COUNT(IAC.NM_PACIENTE) AS TOTAL_MARCADOS,
COUNT(IAC.CD_ATENDIMENTO) AS ATENDIDOS,
(COUNT(IAC.CD_ATENDIMENTO) / COUNT(IAC.NM_PACIENTE) * 100) PERC_ATENDIDO,
(CASE WHEN IAC.TP_PRESENCA_FALTA = 'F' THEN COUNT(IAC.TP_PRESENCA_FALTA) END) AS FALTA
FROM AGENDA_CENTRAL AC
INNER JOIN IT_AGENDA_CENTRAL IAC ON AC.CD_AGENDA_CENTRAL = IAC.CD_AGENDA_CENTRAL
INNER JOIN UNIDADE_ATENDIMENTO UA ON UA.CD_UNIDADE_ATENDIMENTO = AC.CD_UNIDADE_ATENDIMENTO
INNER JOIN MULTI_EMPRESAS ME ON ME.CD_MULTI_EMPRESA = AC.CD_MULTI_EMPRESA
WHERE IAC.NM_PACIENTE IS NOT NULL
AND ME.CD_MULTI_EMPRESA = 2
AND AC.CD_AGENDA_CENTRAL = 12643
GROUP BY AC.CD_UNIDADE_ATENDIMENTO,
UA.DS_UNIDADE_ATENDIMENTO,
ME.DS_MULTI_EMPRESA,
AC.DT_AGENDA,
IAC.TP_PRESENCA_FALTA
Result:
MARCADOS ATENDIDOS PERC_ATENDIDO FALTA
9 9 100% 0
4 0 0 4
Expected result:
MARCADOS ATENDIDOS PERC_ATENDIDO FALTA
13 9 69% 4