我知道“如何限制”或“如何获得第一行”已经发布了很多次,但我找不到针对我的具体问题的解决方案。
我有一个库存余额表,其中包含带有数量的 bin #
我想在我的行上包含最大数量的 bin #
真正的查询比这更大更复杂,但这个例子显示了我面临的问题
我首先做了
select itemnumber,
(select binnumber from inventory_balance where current_balance = (select max(current_balance) from inventory_balance where inventory_balance.itemnumber = item_table.itemnumber)) as binnumber
from item_table;
当只有一个数量最多的“垃圾箱”时,这将起作用。
如果同一商品有 2 个 bin,数量为 10(这是最大数量),则子查询将返回 2 行,触发 oracle 错误
然后我尝试了这个:
select
itemnumber,
(select binnumber from (select binnumber from inventory_balance where current_balance = (select max(current_balance) from inventory_balance where inventory_balance.itemnumber = item_table.itemnumber)) where rownum =1) as binnumber
from item_table;
现在这将不起作用,因为在 from (...) 内部似乎对 item_table.itemnumber 的引用无效。尝试这样做时出现“无效的列名”错误。
我不能使用 ROW_NUMBER() 因为数据库上似乎没有激活“OLAP 窗口函数”。