计算按日期分组的类别中的出现次数

时间:2019-06-24 12:12:52

标签: sql excel ms-access group-by count

我有一个数据行列表(约7000条),这些行以它们的周开始日期为标记。每行数据都有一个与之关联的特定类别,我想创建一个查询或结果表,以获取每个唯一的开始星期几,并基于具有该星期开始日期的数据行汇总每个类别的计数。

我尝试结合使用访问查询和excel修改。

我当前的数据如下:

Category    week
A               5/20/2019
B               5/20/2019
B               5/20/2019
C               5/20/2019
A               5/20/2019
A               5/13/2019
C               5/13/2019
C               5/13/2019
B               5/6/2019
A               5/6/2019
A               5/6/2019

我想要以下格式的东西

week              A      B      C
5/20/2019         2      2      1
5/13/2019         1      0      2
5/6/2019          2      1      0

无论是在多个查询中还是其他条件下,我都只需要像这样将数据分开即可。

3 个答案:

答案 0 :(得分:2)

一种可能的方法是使用条件聚合,例如:

in

如果您希望将多个类别归为一个类别,则可以在iif语句的测试表达式中使用select t.week, sum(iif(t.category = "A", 1, 0)) as A, sum(iif(t.category = "B", 1, 0)) as B, sum(iif(t.category = "C", 1, 0)) as C, sum(iif(t.category in ("D","E","F"), 1, 0)) as D from YourTable t group by t.week 表达式:

transform count(*)
select t.week
from YourTable t
group by t.week
pivot t.category;

或者,您可以使用交叉表查询,例如:

YourTable

将{{1}}更改为表格名称。

答案 1 :(得分:2)

您可以使用数据透视表:

创建选择所有数据(包括标题)的数据透视表

enter image description here

答案 2 :(得分:0)

在我看来,最好的方法是,由于您在标记中提到了MS Access,因此将使用内置方法:

    TRANSFORM Count(tblMyTableName.week) AS [Count-week]
    SELECT tblMyTableName.week
    FROM tblMyTableName
    GROUP BY tblMyTableName.week
    PIVOT tblMyTableName.Category;

tblMyTableName是表的名称。