如何用以前的行值填充oracle中的新行

时间:2018-09-19 12:43:18

标签: sql oracle business-logic

我有一个表A的值低于

year  quarter price source
2017   1       10    s
2017   3       12    t
2018   1       10    m
2018   2       15    r

我希望看到下表。是的,我想用先前的季度值填充非指定的季度。

我想创建一个包含所有季度的临时表B,并对此表A进行联接,但是如何填充上一季度的价格和来源字段。

year  quarter price  source
2017   1       10      s
2017   2       10      s
2017   3       12      t
2017   4       12      t
2018   1       10      m
2018   2       15      r

1 个答案:

答案 0 :(得分:0)

为此,oracle具有LAG窗口功能,该功能允许您访问以前的行。我认为,无论如何都不需要将数据填充到下一行,因为选择时可以轻松地收集它。

例如

SELECT year,
   quarter,
   price,
   source,
   price,
   LAG(price, 1, 0) OVER (ORDER BY year, quarter) AS price_previous FROM   A;