Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

T-SQL Pivot/Unpivot(Transpose) заглавки на колони, необходими като редове с данни

Има няколко объркващи неща, които правите.

Първо, обикновено ще деактивирате няколко колони. В момента деактивирате една колона и изглежда, че го правите само за да преименувате колоната?

Второ, агрегирате данните два пъти, PIVOT трябва да може да се справи с агрегирането с помощта на SUM() .

Трето, не е съвсем ясно защо имате нужда от заглавките на колоните като ред, как искате да се наричат ​​заглавките на колоните?

Въз основа на вашите примерни данни трябва да можете просто да приложите функцията PIVOT:

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

Вижте SQL Fiddle с демонстрация . След това, ако искате ред със заглавките на колоните, тогава можете да използвате 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;

Вижте SQL Fiddle с демонстрация




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо sql сървърът съхранява знаци за въпросителен знак вместо японски знаци в полетата на NVarchar?

  2. Загубих базата данни на SQL Server 2008, трябва да върна структурата на базата данни от LINQ схема

  3. Използвайте OBJECTPROPERTY(), за да разберете дали дадена таблица е системна таблица в SQL Server

  4. Как да конвертирате текстова колона в datetime в SQL

  5. ИЗБЕРЕТЕ $ (знак за долар)