Return 具有多个唯一位置的不同项目只有一条记录

Return only one record of distinct item with multiple unique locations

我不确定这是否可以完成..但我真的只希望一件商品出现在 1 个位置以提取库存,而不是混合使用两个位置,从而导致双倍库存...最好是最小数量的位置,但某些项目具有相同数量的多个位置。这对我来说太深了,我一直在寻找方法 return 即使我无法获得 MIN,也只能 return 3 个中的一个位置。

这是我的 table

ITEM        LOC                QTY
R12345      40A1000005          22
R12345      50B0300003          98
R12345      60C2300004          22

我希望 return 只有一个最小数量的位置。

ITEM    LOC             QTY
R12345  40A1000005      22


SELECT DISTINCT item,loc,min(qty) as minqty
      FROM whse
           GROUP BY item,loc
         ORDER BY item;

这显然行不通,我已经尝试创建其他视图并将它们连接在一起,但我一点运气都没有。

假设mysql:

SELECT DISTINCT item,loc,min(qty) as minqty
  FROM whse
       GROUP BY item,loc
     ORDER BY item LIMIT 1;

所以只需添加一个"LIMIT 1"

对于其他数据库引擎,存在类似的解决方案。

由于您没有提到任何数据库名称,我假设您使用的是 Oracle DB。

这是众多解决方案之一:-

  with tab (item,loc,qty)
as
(
select 'R12345','40A1000005','22' from dual
union all
select 'R12345','50B0300003','98' from dual
union all
select 'R12345','60C2300004','22' from dual
)
select * from (
select item,loc,qty,dense_rank() over (partition by item order by qty,loc) rn from tab)
where rn=1;

如果这能解决您的问题,请告诉我。