【发布时间】:2020-08-27 16:08:52
【问题描述】:
我有一个 Oracle DB 视图,例如:
DATE | PRODUCT_NUMBER | PRODUCT_COUNT | PRODUCT_FACTOR
2018-01-01 | 1 | 10 | 3
2018-03-15 | 1 | 8 | 3
2019-02-11 | 1 | 11 | 3
2019-08-01 | 1 | 5 | 3
2019-08-01 | 2 | 20 | 5
2019-08-02 | 2 | 15 | 5
2019-06-01 | 2 | 5 | 5
2020-07-01 | 2 | 30 | 5
2018-07-07 | 3 | 100 | 2
在哪里,
- DATE 是日期
- NUMBER 是唯一的产品编号
- COUNT 是存储设施中产品编号的项目数
- FACTOR 是可放入存储架的产品数量
我现在需要知道自上次更新每个产品编号以来它发生了多少变化。 由于第一个条目没有可比较的过去日期,因此未定义更改,例如 NULL、NONE、0 左右。没关系,只要我以后可以过滤掉。
有些产品只有 1 个条目,应忽略这些条目(无需计算差异)。
最终结果应该是:
DATE | PRODUCT_NUMBER | PRODUCT_COUNT | PRODUCT_FACTOR | PRODUCT_CHANGE | CHANGE_FACTOR
2018-01-01 | 1 | 10 | 3 | NULL | NULL
2018-03-15 | 1 | 8 | 3 | 2 # 10-8 | 6 # 2*3
2019-02-11 | 1 | 11 | 3 | -3 # 8-11 | -9 # 3*-3
2019-08-01 | 1 | 5 | 3 | 6 # 11-5 | 18 # 6*3
2019-08-01 | 2 | 20 | 5 | -15 # 5-20 | -75 # -15*5
2019-08-02 | 2 | 15 | 5 | 5 # 20-15 | 25 # 5*5
2019-06-01 | 2 | 5 | 5 | NULL | NULL
2020-07-01 | 2 | 30 | 5 | -15 # 15-30 | -75 # -15*5
如何在 Oracle SQL 中实现这一点?
【问题讨论】:
标签: oracle date difference