Microsoft Access在组中查找第二个,第三个,第N个元素

时间:2014-08-05 17:44:38

标签: database ms-access

我有一张桌子:worker_idcompany_id

worker_id是主键

worker_id | company_id
----------------------
 1        | 1
 2        | 1
 3        | 2
 4        | 3
 5        | 3
 6        | 1

我知道如何使用worker_id找到每个company_id中的第一个Min()

SELECT Min([workers per company].worker_id) AS MinOfworker_id, [workers per company].company_id
FROM [workers per company]
GROUP BY [workers per company].company_id;

导致:

worker_id | company_id
----------------------
 1        | 1
 3        | 2
 4        | 3

我知道如何使用worker_id找到每个company_id中的最后Max()

SELECT Max([workers per company].worker_id) AS MaxOfworker_id, [workers per company].company_id
FROM [workers per company]
GROUP BY [workers per company].company_id;

导致:

worker_id | company_id
----------------------
 6        | 1
 3        | 2
 5        | 3

现在我希望每worker_id获得第二个(或第三个,第N个)company_id,结果是:

worker_id | company_id
----------------------
 2        | 1
 5        | 3

有办法做到这一点吗?

编辑:

在kdb +我可以使用:

  

通过workers_per_company

中的company_id选择w:worker_id [1]

获取第二个worker_id

导致:

company_id| w
-------------
 1        | 2
 2        | 
 3        | 5

MS Access中有类似内容吗?

1 个答案:

答案 0 :(得分:1)

您正在尝试在SQL中执行SQL不适合的操作。相反,请考虑编写VBA过程来迭代按公司排序的记录集。