【发布时间】:2014-05-12 16:53:15
【问题描述】:
我正在尝试在 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 记录集。这是您正在与之交谈的数据引擎。如果您从中读取的数据库支持,Recordset 很乐意向您展示这些结果。您可以在连接到 Sql Server 而不是 Excel 时使用这个确切的代码。