Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

T-SQL Pivot/Unpivot(Transpose)-Spaltenüberschriften als Datenzeilen erforderlich

Es gibt ein paar verwirrende Dinge, die Sie tun.

Zunächst entpivotieren Sie normalerweise mehrere Spalten. Sie entpivotieren gerade eine Spalte und es scheint, als würden Sie dies nur tun, um die Spalte umzubenennen?

Zweitens aggregieren Sie die Daten zweimal, der PIVOT sollte in der Lage sein, die Aggregation mit SUM() zu handhaben .

Drittens ist nicht genau klar, warum Sie die Spaltenüberschriften als Zeile benötigen, wie sollen die Spaltenüberschriften heißen?

Basierend auf Ihren Beispieldaten sollten Sie in der Lage sein, die PIVOT-Funktion einfach anzuwenden:

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

Siehe SQL-Fiddle mit Demo . Wenn Sie dann eine Zeile mit den Spaltenüberschriften möchten, können Sie UNION ALL:

verwenden
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;

Siehe SQL-Fiddle mit Demo