добавить все значения предложения IN в столбец выбора - PullRequest
0 голосов
/ 15 февраля 2019

Мне нужно передать все значения из предложения IN, в subselect из столбца.

SELECT   distinct
         'Atendimentos' Tipo,
         to_char(A.DT_ATENDIMENTO, 'mm/yyyy') Competencia,
         pre.cd_prestador,
         se.cd_setor,
         se.nm_setor,
         (
            select  (count(distinct a2.cd_atendimento)) --* 0.3
            from    atendime a2
                    INNER JOIN PRESTADOR Pre2 ON A2.CD_PRESTADOR = 
                                         Pre2.CD_PRESTADOR
                    left join setor se2 on se2.CD_SETOR = 
                                         a2.cd_setor
            where   to_char(a2.DT_ATENDIMENTO, 'mm/yyyy') = 
                    to_char(a.DT_ATENDIMENTO, 'mm/yyyy')
                    and pre2.cd_prestador = pre.cd_prestador --Aqui é o problema
                    and se2.cd_setor = se.cd_setor
            group by to_char(A.DT_ATENDIMENTO, 'mm/yyyy')
         ) total
FROM     ATENDIME A
         INNER JOIN PRESTADOR Pre ON A.CD_PRESTADOR = Pre.CD_PRESTADOR
         left join setor se on se.CD_SETOR = a.CD_SETOR
WHERE    to_char(A.DT_ATENDIMENTO, 'mm/yyyy') = '08/2018'
         and pre.cd_prestador in (127,3921,1704,28,5048,3118,130,3336,2171,1869,128,132,186)
order by se.cd_setor

Мне нужен этот последний столбец, чтобы получить общую сумму вызовов.

В подразделе WHERE (столбец с псевдонимом "total") я сравниваю компетенцию с внешней компетенцией выбора, а сектор - с внешним сектором выбора.

Пока все нормально.

Проблема в столбце prestador, который, если хотя бы один, просто должен был оставаться там наверху.

Однако мне нужно провести сравнение со всеми значениями, которые передаются в предложении IN внешнего выбора.

1 Ответ

0 голосов
/ 15 февраля 2019

Я понимаю, что подзапрос предназначен для вычисления итогов по всему набору результатов.Если это так, то это выглядит как типичный вариант использования оконных функций.

Я подозреваю, что ваш подзапрос можно заменить просто оконной функцией, как показано ниже:

SELECT   distinct
         'Atendimentos' Tipo,
         to_char(A.DT_ATENDIMENTO, 'mm/yyyy') Competencia,
         pre.cd_prestador,
         se.cd_setor,
         se.nm_setor,
         count(distinct a2.cd_atendimento) over() total
FROM     ATENDIME A
         INNER JOIN PRESTADOR Pre ON A.CD_PRESTADOR = Pre.CD_PRESTADOR
         left join setor se on se.CD_SETOR = a.CD_SETOR
where    to_char(A.DT_ATENDIMENTO, 'mm/yyyy') = '08/2018'
         and pre.cd_prestador in (127,3921,1704,28,5048,3118,130,3336,2171,1869,128,132,186)
order by se.cd_setor
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...