MS Access 中按组排列的前 5 条记录
Posted
技术标签:
【中文标题】MS Access 中按组排列的前 5 条记录【英文标题】:Top 5 records by group in MS Access 【发布时间】:2017-10-05 09:36:26 【问题描述】:下面的代码返回所有记录:-
SELECT b.BROKERAGE_NAME, q.VAL_DATE
FROM TBLQUOTESNEW q LEFT JOIN TBLBROKERAGESNEW b ON q.BROKERAGE_ID = b.ID
WHERE q.VAL_DATE Is Not Null
是否可以返回每个 BROKERAGE_NAME
的前 5 条记录,其中 VAL_DATE
是递减的?
包括
Brokerage A 02/10/2017
Brokerage A 02/10/2017
Brokerage A 02/10/2017
Brokerage A 02/10/2017
Brokerage A 01/10/2017
Brokerage B 06/06/2016
排除(因为不在前 5 名中)
Brokerage A 30/09/2017
【问题讨论】:
我本来建议使用SELECT TOP 5
和ORDER BY VAL_DATE DESC
,但这只有在您的日期有不同的时间范围时才有效。因为它是 2/10/2017 将是第一名,30/09/2017 将是第二名。
查看allenbrowne.com/subquery-01.html,每组前n个部分
Top n records per group sql in access的可能重复
必须同意@ErikvonAsmuth。正在研究如何做,那是我找到的帖子,我认为 Allenbrowne 链接是我用来在副本中获得答案的链接。
它不是重复的(反正不是我的)
【参考方案1】:
SELECT TOP 5
b.BROKERAGE_NAME,
q.VAL_DATE
FROM
TBLQUOTESNEW q
LEFT JOIN
TBLBROKERAGESNEW b
ON q.BROKERAGE_ID = b.ID
WHERE
q.VAL_DATE Is Not Null
GROUP BY
BROKERAGE_NAME
ORDER BY
VAL_DATE DESC`
【讨论】:
这不会返回问题中指定的结果。它返回前 5 名经纪商。不是每个经纪公司的前 5 个 VAL_DATE。 那是因为你的样本数据只有 Brokerage A - 他可能和我做的一样,只是复制你的样本并使用它。完全忽略了您希望它由经纪公司拆分。 :) @DarrenBartrup-Cook - 改进了示例数据 :)以上是关于MS Access 中按组排列的前 5 条记录的主要内容,如果未能解决你的问题,请参考以下文章