为每个订单行找到下单当天生效的标价。
- 下单日期
order_date取订单order_ts的日期部分。 - 价格表里同一商品的价格区间为
[valid_from, valid_to):含起点、不含终点,即生效条件是valid_from ≤ order_date < valid_to。valid_to为 null 表示这个价格至今仍然有效(没有终点)。 - 同一商品的区间首尾相接、互不重叠,所以每个订单行最多匹配一个价格。恰好落在两个区间交界那天的订单,用新价格。
- 找不到生效价格的订单行(商品没有价格历史,或者下单早于最早的
valid_from)不输出。
输入
order_items(order_id, product_id, qty, unit_price, discount)orders(order_id, customer_id, order_ts, status, channel)price_history(product_id, valid_from, valid_to, price)
输出
列为 order_id, product_id, order_date, list_price,其中 order_date 是日期,list_price 是价格表的 price。行顺序不限。