MS Access Query从同一字段获取多个计数

时间:2016-12-09 00:36:09

标签: sql access

我查询的导入数据有一个日期/时间字段,我可以在表格中将其格式化为日期。

样品:

Ticket     Name   Date
INC000101  User1  9/5/2016 10:00:34AM
INC000102  User2  9/5/2016 12:02:00PM
INC000103  User1  9/7/2016 3:34:00PM
INC000104  User2  10/1/2016 9:30:23AM
INC000105  User1  10/5/2016 10:20:00AM
INC000106  USer2  10/6/2016 4:56:00PM

我试图计算每个用户每月有多少张门票。因为Date字段来自数据库作为文本字段,所以我似乎无法将该格式设为日期/时间,所以我使用" left"按月过滤。这就是我用来获得10月份单个用户项目的回报。

SELECT COUNT(*)
  FROM 2016YTD
  WHERE [Name]='User1' AND left(Date,3) = '10/';

我想每月通过UserX添加User2的计数,这样我就可以在一个报告中为每个用户每个月的每个门票数量获取一个计数行或列。我尝试的所有内容都因某种形式的语法错误而无法保存查询。我已经尝试了以下查询帮助帖子的变体,但没有成功。

SELECT a.distributor_id,
(SELECT COUNT(*) FROM myTable WHERE level='personal' and distributor_id = a.distributor_id) as PersonalCount,
(SELECT COUNT(*) FROM myTable WHERE level='exec' and distributor_id = a.distributor_id) as ExecCount,
(SELECT COUNT(*) FROM myTable WHERE distributor_id = a.distributor_id) as TotalCount

FROM myTable a;

我确定答案正在盯着我看,目前还不确定。

感谢您阅读

约翰

2 个答案:

答案 0 :(得分:1)

这只是关于如何处理存储在文本字段中的日期的第一个问题的答案。

要获得每月所有用户的计数,您可以这样做:

SELECT [Name], Format([Date],'mmmm') AS Month, COUNT(*) as Count
  FROM 2016YTD
  GROUP BY [Name], Format([Date],'mmmm')

包含始终格式相同的日期的文本字段可以视为Format()的日期,因此Format([Date],'mmmm')返回每个日期的完整月份名称。

答案 1 :(得分:0)

你应该只需要条件聚合。我有一段时间没有看过访问,但可能只是这样:

SELECT
    a.distributor_id
    ,Format([Date],'mmmm') as Month
    ,SUM(IIF(level='personal',1,0)) as PersonalCount
    ,SUM(IIF(level='exec',1,0)) as ExecCount
    ,COUNT(*) as TotalCount
FROM
    myTable a
GROUP BY
    a.distributor_id
    ,Format([Date],'mmmm')