请建议良好的SQL查询以查找库存差异的开始和结束日期
想象我在如下表中的数据。
Sample_table
transaction_date stock
2018-12-01 10
2018-12-02 10
2018-12-03 20
2018-12-04 20
2018-12-05 20
2018-12-06 20
2018-12-07 20
2018-12-08 10
2018-12-09 10
2018-12-10 30
Run Code Online (Sandbox Code Playgroud)
预期结果应该是
Start_date end_date stock
2018-12-01 2018-12-02 10
2018-12-03 2018-12-07 20
2018-12-08 2018-12-09 10
2018-12-10 null 30
Run Code Online (Sandbox Code Playgroud)
这是差距和孤岛问题。您可以为此使用row_numer和group by。
select t.stock, min(transaction_date), max(transaction_date)
from (
select row_number() over (order by transaction_date) -
row_number() over (partition by stock order by transaction_date) grp,
transaction_date,
stock
from data
) t
group by t.grp, t.stock
Run Code Online (Sandbox Code Playgroud)
在下面的DBFIDDLE DEMO中,我也解决null了最后一组的值,但是查找连续行的主要思想是基于上述查询。
您可以检查此该解决方案的说明。
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |