'Biggest date before' WHERE 子句(OleDB SELECT 方法)



我正在使用VBA将数据从Access DB file导入Excel,并且我正在努力解决其中一个查询中的WHERE子句。这并不是一个技术难题。这更像是一种战略困难。

现在,在建立连接后,

Dim prv As String: prv = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=..." & _
"Jet OLEDB:Database Password=..."
Dim DBcon As New Connection
DBcon.Open prv 

我使用下一个查询:

Dim BDrcs As New Recordset
RC01.Open "SELECT * from Table1 WHERE Field1=Dateserial(2020,5,26)", DBcon

出于预期目的,代码工作正常!但是,我的目标是获取Table1WHERE Field1在没有任何日期2020/05/26之前2020/05/26

日期较大。是否可以对单个查询执行此操作?

请不要费心回复替代方法(不是我不想要它,只是没有必要(。我知道我以前总是可以从表中获取所有数据(或者至少2020/05/26之前的所有数据(,检查更大的日期,然后再次获取数据。我只是试图只用一个查询来获取数据,如果可能的话......

如果使用Max不起作用,则可以尝试使用TOP进行子查询。像这样:

SELECT A.*
FROM Table1 AS A 
WHERE A.Field1=
(SELECT DISTINCT TOP 1 B.Field1 FROM Table1 AS B 
WHERE B.Field1<=DateSerial(2020,5,26) 
ORDER BY B.Field1 DESC)

问候

最新更新