Return 运行 来自另一列的最大列 SQL

Return running max column from another column SQL

我有一个查询,我想在其中将一列操作为 return 一个数组,该数组仅包含另一列的最后 12 个值的最大值(由于查询的其他部分)。

示例: 我想从以下位置添加 MaxLast12 列:

Month Power 
1     10
2     16
3     8
4     14
5     15
6     3
7     6
8     10
9     11
10    12
11    12
12    12
13    18
14    12

To become:
Month Power MaxLast12
1     10    10
2     16    16
3     8     16
4     14    16
5     15    16
6     3     16
7     6     16
8     17    17
9     11    17
10    12    17
11    12    17
12    12    17
13    18    18
14    12    18

它也有助于创建一个更简单的解决方案,我只在查询中包含 12 行(不会那么准确,但足以满足目的),并且只有最大值。需要执行以下操作:

Month Power 
1     6
2     6
3     8
4     14
5     15
6     3
7     6
8     10
9     11
10    12
11    12
12    12

To become:
Month Power YearMax
1     10    17
2     16    17
3     8     17
4     14    17
5     15    17
6     3     17
7     6     17
8     17    17
9     11    17
10    12    17
11    12    17
12    12    17

由于我猜测这两个问题的解决方案将是相似的,因此请提供任何可能的帮助。想避免使用 GROUP BY 子句,因为我正在修改一种现有的复杂查询。

尝试使用 max() 实现此目的,但没有成功。

我正在使用 SQL-developer。

在 Oracle 中,您将使用 window 函数:

select month, power,
       max(power) over (order by month rows between 11 preceding and current row)
from t;