Чтобы использовать PIVOT
с вашими данными, вы должны использовать следующее. Сначала выполняется UNPIVOT
, а затем PIVOT
, чтобы получить данные в нужном формате:
create table t1
(
geo varchar(2),
prd varchar(2),
pack varchar(2),
datatype int,
sales1 int,
sales2 int
)
insert into t1 values ('T1', 'P1', 'M1', 22, 1, 2)
insert into t1 values ('T1', 'P1', 'M1', 23, 2, 8)
insert into t1 values ('T1', 'P1', 'M1', 24, 3, 5)
insert into t1 values ('T2', 'P2', 'M2', 22, 3, 2)
insert into t1 values ('T2', 'P2', 'M2', 23, 1, 4)
insert into t1 values ('T2', 'P2', 'M2', 24, 1, 7)
select *
from
(
select geo, prd, pack, cast(datatype as varchar(5)) + '_' + col col,value
from t1
unpivot
(
value
for col in (sales1, sales2)
) u
) x
pivot
(
sum(value)
for col in ([22_sales1], [22_sales2], [23_Sales1], [23_Sales2], [24_Sales1], [24_Sales2])
) p
См. SQL Fiddle с демоверсией