SQL RANK()等价于VBA ADODB.Recordset

我正在尝试在VBA中为ADODB.Recordset对象编写一个SQL查询,该对象会生成计算出的排名字段。 使用transact-SQL不能像在这里的示例中看到的那样工作。

strSQL = "SELECT DISTINCT [MONTH-YYYY], Location, (SUM([O/T Earnings])/SUM([Monthly Earnings])) AS OT_AS_PCT " strSQL = strSQL & "RANK() OVER (PARTITION BY [MONTH-YYYY] ORDER BY (SUM([O/T Earnings])/SUM([Monthly Earnings])) DESC) AS RANK " strSQL = strSQL & "FROM [Overtime Data$] " strSQL = strSQL & "GROUP BY [MONTH-YYYY], Location " rst_ranks.Open strSQL, cnn, adOpenStatic, adLockReadOnly 

我注意到,在ADODB中使用函数之前,SQL函数不起作用,必须使用VBA函数。 是否有一个允许PARTITION BY参数的VBA Rank()函数。

谢谢!

什么是您的ADODB连接提供程序?

如果你试图使用Rank()对Access数据库它不会工作。

去看看这个问题在Access中分组sorting,看看如何做访问排名

奇怪的是,标准SQL函数(如RANK()或BETWEEN())在VBA / ADODBloggingstring中不起作用。 相反,使用现有的VBAfunction是必要的,并且工作原理是一样的。