В моей таблице 5 столбцов:
client manager year month value
, и я хотел бы повернуть его к таблице, где месяцы должны быть в столбцах:
client manager year m01 m02 m03 m04 m05 m06 m07 m08 m09 m10 m11 m12
Я знаю, что я Можно сделать это следующим образом:
select
client,
manager,
year,
sum(case when month = 1 the value else 0 end) m01,
sum(case when month = 2 the value else 0 end) m02,
sum(case when month = 3 the value else 0 end) m03,
sum(case when month = 4 the value else 0 end) m04,
sum(case when month = 5 the value else 0 end) m05,
sum(case when month = 6 the value else 0 end) m06,
sum(case when month = 7 the value else 0 end) m07,
sum(case when month = 8 the value else 0 end) m08,
sum(case when month = 9 the value else 0 end) m09,
sum(case when month = 10 the value else 0 end) m10,
sum(case when month = 11 the value else 0 end) m11,
sum(case when month = 12 the value else 0 end) m12
from t
group by
client,
manager,
year
Но для некоторых дополнительных вычислений я хочу добавить столбцы m0 и m13 в мою таблицу, где m0 - это 12-й месяц предыдущего года, а m13 - это 1-й месяц в следующем году.
Есть ли простой способ (без использования объединений, опережающих и запаздывающих функций) сделать это с простой группой?