请帮助,尝试在Oracle环境中没有运气的不同查询。为了简化这种情况,假设我们有一个包含这样的记录的表
doc_id doc_date product_id price
1 01.01.2011 1 20.3
1 01.01.2011 2 10.0
2 15.01.2011 3 10.3
2 15.01.2011 2 null
因此,如果没有更多设置新价格的文档或将其重置为null,则产品的价格由doc_date中的文档设置为下一个doc_date或无穷大,null表示从doc_date开始无法获得产品销售。 / p>
我需要一个选择,以“展开”形式的数据:
doc_id from_date to_date product_id price
1 01.01.2011 null 1 20.3
1 01.01.2011 14.01.2011 2 10.0
2 15.01.2011 null 2 null
2 15.01.2011 null 3 10.3
甚至:
doc_id from_date to_date product_id price
1 01.01.2011 14.01.2011 1 20.3
1 01.01.2011 14.01.2011 2 10.0
2 15.01.2011 null 2 null
2 15.01.2011 null 3 10.3
any 15.01.2011 null 1 20.3
谢谢!
答案 0 :(得分:2)
Select
doc_id,
doc_date as from_date,
(lead(doc_date) over (partition by product_id order by doc_date) ) - 1 as to_date,
product_id,
price
from
product_table