2016-12-09 79 views
1

我查询的日期/时间字段不能格式化为表中的日期。MS 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 

我试图让每一个用户多少张门票每月有一个计数。由于日期字段来自数据库作为文本字段,我似乎无法将该格式设置为日期/时间,因此我使用“左侧”按月过滤。这是我用于在10月份单个用户项目上获得回报的内容。

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

我想通过每月用户X添加计数用户2这样我就可以每月获得数行或列的每个用户每票的数量在一份报告中。由于语法错误,我尝试过的所有内容都不会保存查询。我尝试过以下查询帮助帖子的变体,但没有成功。

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;

我确定答案是盯着我,只是不确定目前是什么。

感谢您阅读

约翰

回答

1

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

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

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

包含总是在同一格式的日期的文本字段可以被视为与格式(),所以格式的日期([日期],'mmmm')会返回每个日期的完整月份名称。

+0

这有很大的帮助。有没有办法按周数打破日期? – Flakman

+0

查看Format的WW修饰符。要试试这个。是的,甚至更好。这实际上可以满足我所需要的。对数据库进行一些调整并做出报告。谢谢!! – Flakman

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')