Jest kilka mylących rzeczy, które robisz.
Najpierw zazwyczaj przestawiasz wiele kolumn. W tej chwili cofasz jedną kolumnę i wygląda na to, że robisz to tylko po to, by zmienić nazwę kolumny?
Po drugie, agregujesz dane dwukrotnie, PIVOT powinien być w stanie obsłużyć agregację za pomocą SUM()
.
Po trzecie, nie jest do końca jasne, dlaczego potrzebujesz nagłówków kolumn jako wiersza, jak mają się nazywać nagłówki kolumn?
Na podstawie przykładowych danych powinieneś być w stanie po prostu zastosować funkcję PIVOT:
select 'TotalRecords' TotalRecords,
[2012],
[2013],
[All]
from tbleirstatisticsoverviewsummary
pivot
(
sum(totalrecords)
for FiscalYear IN ([2012],[2013],[ALL])
) p;
Zobacz Skrzypce SQL z wersją demonstracyjną . Następnie, jeśli chcesz wiersz z nagłówkami kolumn, możesz użyć 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;
Zobacz Skrzypce SQL z wersją demonstracyjną