SQL Server中两个计数的总和

时间:2013-10-22 09:24:20

标签: sql sql-server count

此查询工作正常,但看起来多余(可能是我错了)。它有更好的方法吗? (我需要所有4列,每行总计)

 select parz.*, (parz.sessioniSvolte + parz.sessioniPianificate ) as sessioniTotale
 from (
    select 
      e.Prefettura AS Prefettura, 
      count(case when  s.Giorno<getDate() then    s.idSessione else null end) AS sessioniSvolte,
      count(case when  s.Giorno>=getDate() then    s.idSessione else null end) AS sessioniPianificate
        from SESSIONE_FORMAZIONECIVICA s
        inner join SEDE_SESSIONECIVICA e ON e.idSede = s.idSede

        GROUP BY e.Prefettura
) as parz

我创建了类似的问题,但是我的问题并不匹配。

1 个答案:

答案 0 :(得分:3)

通过添加简单的count(*)

,可以在没有子查询的情况下重写您的查询
select 
  e.Prefettura AS Prefettura, 
  count(case when s.Giorno<getDate() then s.idSessione end) AS sessioniSvolte,
  count(case when s.Giorno>=getDate() then s.idSessione end) AS sessioniPianificate,
  count(*) as sessioniTotale
from SESSIONE_FORMAZIONECIVICA s
join SEDE_SESSIONECIVICA e ON e.idSede = s.idSede
GROUP BY e.Prefettura

我删除了多余的else null,因为null是没有匹配的情况下的默认结果。