我查询的导入数据有一个日期/时间字段,我可以在表格中将其格式化为日期。
样品:
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;
我确定答案正在盯着我看,目前还不确定。
感谢您阅读
约翰
答案 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')