sql >> Base de Datos >  >> RDS >> Sqlserver

Encabezados de columna T-SQL Pivot/Unpivot(Transpose) necesarios como filas de datos

Hay algunas cosas confusas que estás haciendo.

En primer lugar, por lo general, desvinculará varias columnas. En este momento, ¿está quitando el pivote de una columna y parece que lo está haciendo solo para cambiar el nombre de la columna?

En segundo lugar, está agregando los datos dos veces, PIVOT debería poder manejar la agregación usando SUM() .

En tercer lugar, no está exactamente claro por qué necesita los encabezados de columna como una fila, ¿cómo desea que se llamen los encabezados de columna?

Según sus datos de muestra, debería poder aplicar la función PIVOT:

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

Consulte SQL Fiddle con demostración . Luego, si desea una fila con los encabezados de las columnas, puede usar 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 con demostración