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

Transpozycja w SQL Server 2012

Ale jeśli chcesz DYNAMICZNE:Sql DEMO

Najpierw potrzebujesz tabeli czasowej, aby utworzyć identyfikator wiersza

SELECT row_number() over (partition by [Country] order by [StateCity]) [rn], 
       [StateCity],
       [Country]
INTO temp
FROM State;

Następnie możesz przejść do dynamicznej trasy obrotu

Utwórz różne kolumny

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.[Country]) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

Utwórz zapytanie przestawne:

set @query = 'SELECT rn, ' + @cols + ' from 
            (
                select [rn]
                     , [StateCity]
                     , [Country]
                from temp
           ) x
            pivot 
            (
                 max(StateCity)
                for [Country] in (' + @cols + ')
            ) p ';

Wykonaj

execute(@query);

WYJŚCIA:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rozmiar typu danych zmiennej w sql

  2. Jak szybko edytować wartości w tabeli w SQL Server Management Studio?

  3. SQL Server 2005 Umieszcza nawiasy kwadratowe wokół nazwy kolumny

  4. Jak uzyskać przesunięcie strefy czasowej od nazwy strefy czasowej?

  5. Jak opisać tabelę w SQL Server 2008?