MS Access中日期实例的SQL计数

时间:2016-05-10 06:37:13

标签: sql ms-access

所以我在下面的链接中有一个数据表(zip文件中的excel电子表格): https://drive.google.com/file/d/0B4mYzBk2sry_eDg5NVhTcmtXTTg/view?usp=sharing

已按“发布日期 - 最旧到最近”排序和排序。

我所追求的是一个解决方案,可以让我了解财务年度(2015年7月1日至2016年6月30日)一个月内发生的问题。

例如,参考数据,2015年7月有13个问题,2015年8月有16个问题,2015年9月有9个问题等。

我已经创建了以下代码来生成电子表格中提供的数据:

SELECT tblCustomerNames_1.CustomerName AS [Issued To], tblCustomerNames.CustomerName AS [Issued By], tblIssueSheets.DateIssued AS [Date Issued], Count(tblMarkHistory.MarkHistoryID) AS [Marks Issued]
FROM (tblCustomerNames AS tblCustomerNames_1 INNER JOIN (tblIssueSheets INNER JOIN tblCustomerNames ON tblIssueSheets.IssuedBy = tblCustomerNames.CustomerID) ON tblCustomerNames_1.CustomerID = tblIssueSheets.CustomerID) INNER JOIN tblMarkHistory ON tblIssueSheets.IssueID = tblMarkHistory.IssueID
WHERE (((tblIssueSheets.DateIssued)>=[DateFrom] And (tblIssueSheets.DateIssued)<[DateTo]) AND ((tblCustomerNames.CustomerID)=2447))
GROUP BY tblCustomerNames_1.CustomerName, tblCustomerNames.CustomerName, tblIssueSheets.DateIssued
ORDER BY tblCustomerNames_1.CustomerName;

请注意,数据是故意遗漏的,因为我认为到目前为止我提供的信息对于所需的信息更为重要。如果还不够,请告诉我,我将提供其余的数据。

按月份和年份发布的日期总数的结果表就是我所追求的。

我不知道怎么回事。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用已保存的查询作为来源,可能是:

Select 
    Month([Date Issued]) As [Month],
    Count(*) As Issues
From
    YourQuery
Where
    [Date Issued] Between #2015/07/01# And #2016/06/30#
Group By
    Month([Date Issued])
Order By
    Year([Date Issued]),
    Month([Date Issued])

如果Month#应该在财政年度之后,请使用通用函数来抵消日历年的日期:

Public Function DateFinancial( _
  ByVal datDate As Date) _
  As Date

  ' Number of months from start of calendar year to start of financial year.
  Const clngMonthOffset As Long = 6

  Dim datFinancial      As Date

  datFinancial = DateAdd("m", -clngMonthOffset, datDate)

  DateFinancial = datFinancial

End Function