我有一个清单价格表,其中产品价格不断变化,另一个表产品表,其中包含产品销售日期和价格的条目。 我想在该日期或之前(销售时)比较产品的价格,并将该清单价格与销售价格一起放在我的产品表中。
表格如下:
list price , Valid from ,valid to product
23 , jul 7 , july 15, X
24 , jul 20 , july 30,X
25 , aug 5 , aug 30,X
20,sep 5,sep 26,X
产品表:
Product , Selling price , As of date
X , 24 , jul 10
X,39, jul 30
x,40, aug 28
我希望使用最接近的日期将列(ListPrice)附加到我的Product表 到价格表中该日期的AS_OF_DATE列和清单价格。
select Product.*, price.list_price from
(select '2017-07-20 12:00:00'::timestamp as
valid_from,select '2017-07-20 12:00:00'::timestamp as valid_from) price
left join (select '2017-07-20 12:15:00'::timestamp as ts, true as val
)product on product.ts >= price.valid_from and b.ts < price.valid_to;
请建议在oracle中进行此操作的方法。
答案 0 :(得分:0)
只需使用join
select p.*, lp.*
from products p left join
listprices lp
on p.product = lp.product and
p.asofdate >= lp.validfrom and
p.asofdate <= lp.validto;
如果您不想考虑validto
日期。 。
select p.*,
(select max(lp.price) keep (dense_rank first order by lp.validfrom desc)
from listprices lp
where p.product = lp.product and
p.asofdate >= lp.validfrom
) as listprice
from products p ;