Existuje několik matoucích věcí, které děláte.
Nejprve obvykle odklopíte několik sloupců. Právě teď odebíráte jeden sloupec a zdá se, že to děláte jen proto, abyste sloupec přejmenovali?
Za druhé, data agregujete dvakrát, PIVOT by měl být schopen zpracovat agregaci pomocí SUM()
.
Za třetí, není přesně jasné, proč potřebujete záhlaví sloupců jako řádek, jak chcete, aby se záhlaví sloupců nazývalo?
Na základě vašich ukázkových dat byste měli být schopni použít funkci PIVOT:
select 'TotalRecords' TotalRecords,
[2012],
[2013],
[All]
from tbleirstatisticsoverviewsummary
pivot
(
sum(totalrecords)
for FiscalYear IN ([2012],[2013],[ALL])
) p;
Viz SQL Fiddle s ukázkou . Pokud pak chcete řádek se záhlavím sloupců, můžete použít 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;