Има няколко объркващи неща, които правите.
Първо, обикновено ще деактивирате няколко колони. В момента деактивирате една колона и изглежда, че го правите само за да преименувате колоната?
Второ, агрегирате данните два пъти, PIVOT трябва да може да се справи с агрегирането с помощта на SUM()
.
Трето, не е съвсем ясно защо имате нужда от заглавките на колоните като ред, как искате да се наричат заглавките на колоните?
Въз основа на вашите примерни данни трябва да можете просто да приложите функцията PIVOT:
select 'TotalRecords' TotalRecords,
[2012],
[2013],
[All]
from tbleirstatisticsoverviewsummary
pivot
(
sum(totalrecords)
for FiscalYear IN ([2012],[2013],[ALL])
) p;
Вижте SQL Fiddle с демонстрация . След това, ако искате ред със заглавките на колоните, тогава можете да използвате 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 с демонстрация