在Access Query中筛选日期时,如何确保获得正确数量的记录:
SELECT ID, REF, SalesDate, DCount("ID","tblRecords"," Ref='" & [Ref] & "' AND [SalesDate]=#" & format([SalesDate],"yyyy/mm/dd") & "#") as EXPR1 from tblCurrent
如果不能被误解,比如28-04-12,它会选择日期,但如果是04-06-12,它就不会选择,因为它认为这是错误的。
请注意,此查询不是动态创建的,也不是从表单等中生成的。
我在VBA中使用yyyy/mm/dd作为日期:
#" & Format([SalesDate],"yyyy/mm/dd") & "#"
或参数,用于构建查询。
编辑附加信息
鉴于您使用的是SQL server,我建议您使用派生表,这样您可以更快地找到它,例如:
SELECT dbo_Table_1.ADate, ACount FROM dbo_Table_1
LEFT JOIN (SELECT a.ADate,Count(*) As ACount
FROM dbo_Table_1 As a GROUP BY a.ADate) b
ON dbo_Table_1.Adate=b.ADate
编辑重新讨论
SELECT * FROM dbo_vwRecordsCurrent As t
LEFT JOIN (
SELECT a.OpptyIncentiveModifiedDate, a.DataSetID, Count(*) AS ACount
FROM dbo_vwRecordsHistorical AS a
WHERE a.OpportunityIgnored = True
GROUP BY a.OpptyIncentiveModifiedDate, a.DataSetID) AS h
ON t.OpptyIncentiveModifiedDate = h.OpptyIncentiveModifiedDate
AND t.DataSetID = h.DataSetID
我已经对您的表进行了别名处理,因为名称很长,所以对我来说,在外部sql上使用别名更可读。它们在内部sql中是必不可少的。用现有表的名称对派生表进行别名不是一个好主意。