SQL Oracle 最接近的匹配变量
SQL Oracle closest match variable
我有下面两个表
~ 我想做什么:我想将 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
我有下面两个表
~ 我想做什么:我想将 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