SQL Oracle 最接近的匹配变量

SQL Oracle closest match variable

我有下面两个表

Table 2: SAP
M_NR    Quantity    Price
10023   1   100
10023   10  120
10023   20  250
10023   100 400
10334   0   36
10334   200 600

~ 我想做什么:我想将 Table 2 中的价格附加到 Table 1。如果 Table 1 中的确切数量不在 Table 2,从Table 2中取最接近的最大数量[即12 Table 2 中没有数量,最接近的最大值是 20,所以我想要那个的价格]

所以结果应该是这样的:

我试过下面的查询,但没有给出正确的输出。我只想要每个数量的 1 个价格,如 Table 1.

中所示
select distinct
t1.Product_NR,
t1.Customer,
t1.Quantity,
t2.price

from Table_1 t1
join Table_2 t2 on t1.Product_NR = t2.Product_NR
                and t1.Quantity <= t2.Quantity

这是一种选择:

select product_nr,customer,quantity,price from (
select 
t1.product_nr,t1.customer,t1.quantity,t2.quantity 
a,t2.price,min(t2.quantity)over(partition by t1.product_nr,t1.customer) b
from table1 t1 join table2 t2 on t1.product_nr=t2.product_nr and 
t2.quantity>=t1.quantity)
where a=b

示例数据:

create table table1 (product_nr number,customer varchar2(2), quantity number);
create table table2 (product_nr number, quantity number, price number);

insert into table1 values (10023,'x',12);
insert into table1 values (10023,'y',10);
insert into table1 values (10334,'x',1);


insert into table2 values (10023,1,100);
insert into table2 values (10023,10,120);
insert into table2 values (10023,20,250);
insert into table2 values (10023,100,400);
insert into table2 values (10334,0,25);
insert into table2 values (10334,200,600);

查询输出:

10023   x   12  250
10023   y   10  120
10334   x   1   600

db<>fiddle