あなたがしているいくつかの紛らわしいことがあります。
まず、通常、複数の列のピボットを解除します。現在、1 つの列のピボットを解除しようとしていますが、列の名前を変更するためだけにそうしているように見えますか?
次に、データを 2 回集計しています。PIVOT は SUM()
を使用して集計を処理できるはずです。 .
第 3 に、列ヘッダーを行として必要とする理由が明確ではありません。列ヘッダーを何と呼びたいですか?
サンプル データに基づいて、PIVOT 関数を適用するだけで済みます。
select 'TotalRecords' TotalRecords,
[2012],
[2013],
[All]
from tbleirstatisticsoverviewsummary
pivot
(
sum(totalrecords)
for FiscalYear IN ([2012],[2013],[ALL])
) p;
SQL Fiddle with Demo を参照してください。 .次に、列ヘッダーを含む行が必要な場合は、UNION ALL を使用できます:
select 'colname' col1,
2012 col2,
2013 col3,
'All' col4
union all
select 'TotalRecords' TotalRecords,
[2012],
[2013],
[All] = cast([all] as varchar(10))
from tbleirstatisticsoverviewsummary
pivot
(
sum(totalrecords)
for FiscalYear IN ([2012],[2013],[ALL])
) p;
SQL Fiddle with Demo を参照してください。