本文介紹了從另一列SQL返回正在運行的最大列的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個查詢,我想在其中操作一列以返回一個數組,該數組僅包含另一列中最后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
因為我猜測這兩個問題的解決方案將是相似的,所以任何可能的幫助都是可能的。我希望避免使用usign GROUP BY子句,因為我正在修改一種現有的復雜查詢。
嘗試使用max()實現此目的,但沒有成功。
我正在使用SQL-Developer。
推薦答案
在Oracle中,您將使用窗口函數:
select month, power,
max(power) over (order by month rows between 11 preceding and current row)
from t;
這篇關于從另一列SQL返回正在運行的最大列的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,