Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Cabeçalhos de coluna T-SQL Pivot/Unpivot(Transpose) necessários como linhas de dados


Há algumas coisas confusas que você está fazendo.

Primeiro, normalmente você desarticulará várias colunas. No momento, você está desarticulando uma coluna e parece que está fazendo isso apenas para renomear a coluna?

Segundo, você está agregando os dados duas vezes, o PIVOT deve ser capaz de lidar com a agregação usando SUM() .

Terceiro, não está exatamente claro por que você precisa dos cabeçalhos das colunas como uma linha, como você deseja que os cabeçalhos das colunas sejam chamados?

Com base em seus dados de amostra, você deve ser capaz de aplicar apenas a função PIVOT:
select 'TotalRecords' TotalRecords, 
  [2012],
  [2013],
  [All]
from tbleirstatisticsoverviewsummary
pivot
(
  sum(totalrecords)
  for FiscalYear IN ([2012],[2013],[ALL])
) p;

Consulte SQL Fiddle with Demo . Então, se você quiser uma linha com os cabeçalhos das colunas, poderá usar um 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;

Consulte SQL Fiddle with Demo