我想要一个VBA代码来查询每个ModelID(从第一个表)的TopN,根据每个ModelID(从第二个表)的TopN显示每个ModelID的Top ActiveTime,我知道我必须使用QueryDef和Sql VBA,但我不知道如何编写代码

只是举个例子来说明

我的第一张桌子是

EquipID Equip ActimeTime ModelID
1 DT1 10 1
2 DT2 6 1
3 DT3 13 1
4 DT4 15 1
5 DT5 16 2
6 DT6 12 2
7 DT7 6 2
8 DT8 13 2

我的第二张桌子是

ModelID Model TopN
1 775 3
2 789 2

因此,查询结果应该是这样的(显示775车型的前3名和789车型的前2名)

Equip ActimeTime Model
DT4 15 775
DT3 13 775
DT1 10 775
DT5 16 789
DT8 13 789

提前非常感谢,我真的被困在这个问题上,解决这个问题将对我的项目有很大帮助

[表一][1]

推荐答案

你可以直接用SQL来实现——但是,哦,遵循和构造它是不是很难看

我创建了4个查询,最后一个查询得到了您想要的结果.

关键是根据您要查找的排序顺序(Model和ActimeTime)获取RowID.使用Dcount可以获得一个伪行ID

以下是4个问题——如果你敢的话,我相信你可以做一个mashup

我的表是Table3Table4——您可以在第一次查询中更改它们以匹配您的数据库.102

qListModels

SELECT Table3.Equip, Table3.ActimeTime, Table4.Model, Table4.TopN, "" & [Model] & "-" & Format([ActimeTime],"000") AS [Model-ActTime]
FROM Table3 INNER JOIN Table4 ON Table3.ModelID = Table4.ModelID
ORDER BY Table4.Model, Table3.ActimeTime DESC;

qListModelsInOrder

SELECT qListModels.*, DCount("[Model-ActTime]","[qListModels]","[Model-ActTime]>=" & """" & [Model-ActTime] & """") AS row_id
FROM qListModels;

qListModelStartRows

SELECT qListModelsInOrder.Model, Min(qListModelsInOrder.row_id) AS MinOfrow_id
FROM qListModelsInOrder
GROUP BY qListModelsInOrder.Model;

qListTopNModels

SELECT qListModelsInOrder.Equip, qListModelsInOrder.ActimeTime, qListModelsInOrder.Model
FROM qListModelsInOrder INNER JOIN qListModelStartRows ON qListModelsInOrder.Model = qListModelStartRows.Model
WHERE ((([row_id]-[MinOfrow_id])<[TopN]))
ORDER BY qListModelsInOrder.Model, qListModelsInOrder.ActimeTime DESC;

最后一个可以随时运行,以获得您想要的结果

Example Output:

Results of Top N Model Query

Sql相关问答推荐

如何在联接条件不匹配时按日期获取上一条记录

Stack Exchange站点上的最短帖子(按正文长度计算,用户名为原始发帖(SEDE))

为什么Prisma生成唯一索引,而不是基于方案上的唯一列约束?

如何使用WSO2将空值传递给我的SQL Server存储过程?

如何根据计数和分组获取订单总数

雅典娜嵌套Json提取液

PostgreSQL抽奖查询

查询页面推荐

将一个数组反嵌套到另外两个数组SQL中(Athena/presto)

将JSON文件导入Postgres 16数据库时出错(22P04上次预期列之后的额外数据)

从重复值中获取最新值

用另一个表中的特定名称替换 SQL 查询中的 ID.但我的两个表都有多个列

Postgresql - WHERE 中的 MAX 标准 - 初学者问题

显示所有组并计算给定组中的项目(包括 0 个结果)

具有分组条件的不同计数 (DAX)

Postgresql 具有相似行为和模式行为的问题

SQL Server中使用min()和max()从选定的特定值id表中删除不必要的时间

在没有订单的情况下,如何生成一个值为0的顾客天数行

使用in和and运算符过滤记录的条件

更新表 A,然后将新值插入表 B(包含更新内容的历史日志(log))