Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Transpos di SQL Server 2012

Tetapi jika Anda ingin DINAMIS:Sql DEMO

Pertama, Anda memerlukan tabel temporal untuk membuat row_id

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

Kemudian Anda dapat pergi ke rute pivot dinamis

Buat kolom yang berbeda

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

Buat kueri pivot:

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

Jalankan

execute(@query);

OUTPUT:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jumlah hari yang tersisa di bulan ini

  2. Cara menggunakan variabel SQL untuk mengulangi node XML

  3. SQL - Buat tabel temp atau CTE hari pertama bulan dan nama bulan

  4. Gabungkan dua tabel menjadi satu

  5. INSERT INTO SELECT * untuk SQL Server, Tidak mungkin, Apakah saya benar?