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

Transpozycja wierszy do kolumn w SQL Server 2005

Będziesz musiał wykonać PIVOT . Istnieją dwa sposoby, aby to zrobić za pomocą funkcji PIVOT:Static Pivot, w którym kodujesz kolumny do przekształcenia, lub Dynamic Pivot, który określa kolumny podczas wykonywania.

Statyczny obrót:

SELECT *
FROM
(
    SELECT col1, col2
    FROM yourTable
) x
PIVOT
(
   min(col2)
   for col1 in ([A], [B], [C])
)p

Zobacz Skrzypce SQL z wersją demonstracyjną

Dynamiczny obrót:

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(col1) 
                    from t1
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT ' + @cols + ' from 
             (
                select col1, col2
                from t1
            ) x
            pivot 
            (
                min(col2)
                for col1 in (' + @cols + ')
            ) p '

execute(@query)

Zobacz Skrzypce SQL z wersją demonstracyjną

Jeśli nie chcesz używać PIVOT funkcji, możesz wykonać podobne zapytanie za pomocą CASE oświadczenia:

select 
  SUM(CASE WHEN col1 = 'A' THEN col2 END) as A,
  SUM(CASE WHEN col1 = 'B' THEN col2 END) as B,
  SUM(CASE WHEN col1 = 'C' THEN col2 END) as C
FROM t1

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. Korzystanie z tabel temp w SSIS

  2. Automatyczne usuwanie zapomnianych transakcji w MS SQL Server

  3. Pobierz dzień tygodnia w SQL Server 2005/2008

  4. Konwersja typu danych datetime2 na typ danych datetime wynika z wartości spoza zakresu

  5. SQL Information_Schema Składnia do znajdowania nazwy serwera, szczegółów tabeli i kolumny