データを目的の結果に転置するには、両方のUNPIVOT
を使用する必要があります。 およびPIVOT
関数。
UNPIVOT
関数はA
を取ります およびB
列を作成し、結果を行に変換します。次に、PIVOT
を使用します day
を変換する関数 列への値:
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
SQL FiddlewithDemoを参照してください。
SQL Server 2008以降を使用している場合は、CROSS APPLY
を使用できます。 VALUES
を使用 データのピボットを解除します。コードは次のように変更されます:
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
SQL FiddlewithDemoを参照してください。
#1を編集し、現在のクエリを上記のソリューションに適用すると、次のようなものが使用されます。
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