Para transponer los datos al resultado que desea, deberá usar tanto el UNPIVOT
y el PIVOT
funciones.
El UNPIVOT
la función toma el A
y B
columnas y convierte los resultados en filas. Luego usará el PIVOT
función para transformar el day
valores en columnas:
select *
from
(
select day, col, value
from yourtable
unpivot
(
value
for col in (A, B)
) unpiv
) src
pivot
(
max(value)
for day in (Mon, Tue, Wed, Thu, Fri)
) piv
Ver SQL Fiddle con demostración.
Si está utilizando SQL Server 2008+, puede usar CROSS APPLY
con VALUES
para des-pivotar los datos. Su código se cambiaría a lo siguiente:
select *
from
(
select day, col, value
from yourtable
cross apply
(
values ('A', A),('B', B)
) c (col, value)
) src
pivot
(
max(value)
for day in (Mon, Tue, Wed, Thu, Fri)
) piv
Ver SQL Fiddle con demostración.
Edición n. ° 1, aplicando su consulta actual en la solución anterior, usará algo similar a esto:
select *
from
(
select LEFT(datename(dw,datetime),3) as DateWeek,
col,
value
from DataTable
cross apply
(
values ('A', ACalls), ('B', BCalls)
) c (col, value)
) src
pivot
(
sum(value)
for dateweek in (Mon, Tue, Wed, Thu, Fri)
) piv