我正在尝试计算过去4个月的运行平均值。所以我需要获取每个月的第4个值
month_date | col_1 | Col_2 | Col_3| Col_4
---------------------------------------------
11 | 0 | 0 | 0 | 0
10 | 2 | 0 | 0 | 0
09 | 3 | 4 | 0 | 0
08 | 8 | 7 | 9 | 0
07 | 6 | 8 | 11 | 5
06 | 3 | 4 | 0 | 8
05 | 8 | 7 | 9 | 9
04 | 6 | 8 | 11 | 5
[预期输出]
| Col_1 | Col_2 | Col_3| Col_4
----------------------------------------
| 6 | 4 | 9 | 5
我试图做的事情
-我试图使用无效的NULLS LAST函数,因为我需要根据月份而不是每月进行订购
请帮助
答案 0 :(得分:0)
Unpivot使事情变得简单:
select *
from (
select c, val
from t unpivot (val for c in (col1 as 1, col2 as 2, col3 as 3, col4 as 4))
where month_date + c = 4 + (select min(month_date) from t) )
pivot (max(val) for c in (1 m1, 2 m2, 3 m3, 4 m4))