Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

T-SQL Pivot/Unpivot(Transpose) Intestazioni di colonna necessarie come righe di dati

Ci sono alcune cose confuse che stai facendo.

Innanzitutto, in genere annullerai più colonne. In questo momento, stai annullando il pivot di una colonna e sembra che tu lo stia facendo solo per rinominare la colonna?

In secondo luogo, stai aggregando i dati due volte, il PIVOT dovrebbe essere in grado di gestire l'aggregazione usando SUM() .

Terzo, non è esattamente chiaro il motivo per cui hai bisogno delle intestazioni di colonna come riga, come vuoi che vengano chiamate le intestazioni di colonna?

Sulla base dei tuoi dati di esempio dovresti essere in grado di applicare semplicemente la funzione PIVOT:

select 'TotalRecords' TotalRecords, 
  [2012],
  [2013],
  [All]
from tbleirstatisticsoverviewsummary
pivot
(
  sum(totalrecords)
  for FiscalYear IN ([2012],[2013],[ALL])
) p;

Vedi SQL Fiddle con demo . Quindi, se desideri una riga con le intestazioni delle colonne, puoi utilizzare 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;

Vedi SQL Fiddle con demo