sql >> Databáze >  >> RDS >> Sqlserver

Záhlaví sloupců T-SQL Pivot/Unpivot (Transpose) potřebné jako datové řádky

Existuje několik matoucích věcí, které děláte.

Nejprve obvykle odklopíte několik sloupců. Právě teď odebíráte jeden sloupec a zdá se, že to děláte jen proto, abyste sloupec přejmenovali?

Za druhé, data agregujete dvakrát, PIVOT by měl být schopen zpracovat agregaci pomocí SUM() .

Za třetí, není přesně jasné, proč potřebujete záhlaví sloupců jako řádek, jak chcete, aby se záhlaví sloupců nazývalo?

Na základě vašich ukázkových dat byste měli být schopni použít funkci PIVOT:

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

Viz SQL Fiddle s ukázkou . Pokud pak chcete řádek se záhlavím sloupců, můžete použít 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;

Viz SQL Fiddle s ukázkou




  1. Řešení kódu chyby:1005. Nelze vytvořit tabulku '' (chyba:150) Chyba

  2. Kontrola, zda řádek mysql NENÍ v poli

  3. char vs varchar pro výkon v databázi akcií

  4. Odebrání databázového poštovního účtu z profilu (SSMS)