sql - 将 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
在外部选择的子句中传递的所有值进行比较。
解决方案
我了解子查询旨在计算整个结果集的总数。如果是这样,那么这看起来像是窗口函数的典型用例。
我怀疑您的子查询可以只用一个窗口函数替换,如下所示:
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
推荐阅读
- php - Rest API - 将带有产品的 JSON 文件导入 Drupal 8 并使用该数据创建产品节点
- javascript - 导航覆盖汉堡菜单点击问题
- powershell - 提取给定路径的“子路径”
- windows - Docker运行:多行
- angular - 角翻译innerHTML与参数
- python - Python map() 不适用于 list.append()
- javascript - Webpack Dev Server 包含额外的文件供观看
- python - 赋值运算符如何创建深层副本?
- batch-file - 创建一个批处理文件来备份文件夹,以及如何在其中排除一个文件夹进行备份
- python-3.x - Visual Studio Code,Python 调试不起作用