如何计算总记录并分别计算两个字段相等的记录

时间:2019-05-17 18:56:59

标签: sql sql-server

假设我有一个名为VISITS的下表:

enter image description here

我需要计算每个位置的总记录,然后对Date1Date2值相等的那些记录进行单独计数。最终结果应如下所示:

enter image description here

我可以使用以下方法获得总数:

从“按位置分组的访问”中选择“位置,计数(*)”作为“总访问次数”

通过这样做,我可以获得匹配的访问次数

从访问中选择位置,将计数(*)设为“总匹配” 其中Date1 = Date2按位置分组

但是我不知道如何通过一个查询来完成这两项工作。

2 个答案:

答案 0 :(得分:3)

使用条件聚合:

select v.Location, Count(*),
       sum(case when v.date1 = v.date2 then 1 else 0 end) as same_day
from Visits v
group by v.location;

请注意,您的查询缺少group by子句。

答案 1 :(得分:0)

一种简单的方法可能是

  select Location, Count(*), sum(case when Date1 = Date2 then 1 else 0 end)
  from Visits
  group by location