在Access Access中过滤日期时,如何确保获取正确数量的记录:
SELECT ID, REF, SalesDate, DCount("ID","tblRecords"," Ref='" & [Ref] & "' AND [SalesDate]=#" & format([SalesDate],"yyyy/mm/dd") & "#") as EXPR1 from tblCurrent
Run Code Online (Sandbox Code Playgroud)
如果它不能被误解,如28-04-12,它会选择日期确定,但是如果它是04-06-12它不会捡起它,因为它假设它是错误的方式.
请注意,此查询不是动态创建的,也不是从表单等生成的...
我要么在VBA中使用yyyy/mm/dd作为日期:
#" & Format([SalesDate],"yyyy/mm/dd") & "#"
Run Code Online (Sandbox Code Playgroud)
或参数,用于构建查询.
编辑更多信息
看到您正在使用SQL服务器,我建议您使用派生表,您可以更快地找到它,例如:
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
Run Code Online (Sandbox Code Playgroud)
编辑重新讨论
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
Run Code Online (Sandbox Code Playgroud)
由于名称很长,我给你的表别名,所以对我来说,在外部sql上使用别名更具可读性.它们在内部sql中是必不可少的.使用现有表的名称对派生表进行别名不是一个好主意.
| 归档时间: |
|
| 查看次数: |
25827 次 |
| 最近记录: |