如何以最短的交货时间获得articleID和supplierID?

问题描述 投票:0回答:1

我有一个名为“Procurement”的 SQL 表:

文章ID 供应商ID 交货时间
1 1 4
1 2 6
1 3 8
2 4 3
2 5 5
2 6 7

我希望每件物品的交货时间最短的供应商:

文章ID 供应商ID 交货时间
1 1 4
2 4 3

我在获取正确的供应商 ID 时遇到问题:

SELECT ArticleID, Min(DeliveryTime) AS DeliveryTime 
FROM Procurement
GROUP BY ArticleID

由于 Group By - 子句,SupplierID 列必须出现在聚合函数中...

我怎样才能实现我的目标?

sql sqlanywhere
1个回答
0
投票

这是每个组中不存在的top(n),我相信sqlanywhere支持窗口函数(如果您可以与多个供应商有联系,请使用dense_rank):

select ArticleId, SupplierId, DeliveryTime
from (
  select *, 
  Row_Number() over(partition by ArticleId order by DeliveryTime) rn
  from Procurement
)t
where rn = 1;
© www.soinside.com 2019 - 2024. All rights reserved.