首页 > 解决方案 > 将 IN 子句的所有值添加到子选择列

问题描述

我需要将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在外部选择的子句中传递的所有值进行比较。

标签: sqloracleoracle11g

解决方案


我了解子查询旨在计算整个结果集的总数。如果是这样,那么这看起来像是窗口函数的典型用例。

我怀疑您的子查询可以只用一个窗口函数替换,如下所示:

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

推荐阅读