Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Nagłówki kolumn T-SQL Pivot/Unpivot(Transpose) potrzebne jako wiersze danych

Jest kilka mylących rzeczy, które robisz.

Najpierw zazwyczaj przestawiasz wiele kolumn. W tej chwili cofasz jedną kolumnę i wygląda na to, że robisz to tylko po to, by zmienić nazwę kolumny?

Po drugie, agregujesz dane dwukrotnie, PIVOT powinien być w stanie obsłużyć agregację za pomocą SUM() .

Po trzecie, nie jest do końca jasne, dlaczego potrzebujesz nagłówków kolumn jako wiersza, jak mają się nazywać nagłówki kolumn?

Na podstawie przykładowych danych powinieneś być w stanie po prostu zastosować funkcję PIVOT:

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

Zobacz Skrzypce SQL z wersją demonstracyjną . Następnie, jeśli chcesz wiersz z nagłówkami kolumn, możesz użyć 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;

Zobacz Skrzypce SQL z wersją demonstracyjną




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego RAND() nie generuje liczb losowych?

  2. Wykonaj procedurę składowaną SQL i przetwórz wyniki

  3. Kod utrzymuje limit czasu

  4. Czy istnieje sposób na osadzenie raportów i pulpitów nawigacyjnych Power Bi w aplikacji desktopowej vb.net lub C# z bazą danych sql Server 2008?

  5. Jak zachować jedno wystąpienie połączenia SQL Server otwarte dla wielu żądań w C#?