首页 > 解决方案 > 如何计算总记录并分别计算两个字段相等的记录

问题描述

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

在此处输入图像描述

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

在此处输入图像描述

我可以使用以下方法计算总数:

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

我可以通过这样做来计算匹配的访问次数

选择 Location, Count(*) as 'Total Matched' From Visits where Date1 = Date2 group by Location

但我不知道如何用一个查询来做这两个计数。

标签: sqlsql-server

解决方案


使用条件聚合:

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子句。


推荐阅读