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;
如果这能解决您的问题,请告诉我。
我不确定这是否可以完成..但我真的只希望一件商品出现在 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;
如果这能解决您的问题,请告诉我。