我有一张桌子:worker_id
,company_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中有类似内容吗?
答案 0 :(得分:1)
您正在尝试在SQL中执行SQL不适合的操作。相反,请考虑编写VBA过程来迭代按公司排序的记录集。