2016-12-09 118 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')