Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Transpose trong SQL Server 2012

Nhưng nếu bạn muốn NĂNG ĐỘNG: Sql DEMO

Trước tiên, bạn cần một bảng tạm thời để tạo row_id

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

Sau đó, bạn có thể đi theo tuyến đường trục động

Tạo các cột khác nhau

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

Tạo truy vấn tổng hợp:

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

Thực thi nó

execute(@query);

ĐẦU RA:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thêm hoặc thả cột bằng cách sử dụng GUI trong SQL Server - Hướng dẫn sử dụng SQL Server / T-SQL Phần 39

  2. Tại sao SSIS không nhận ra dấu phân cách hàng {LF} của nguồn cấp dữ liệu dòng khi nhập tệp phẳng UTF-8?

  3. Xóa tài khoản thư cơ sở dữ liệu khỏi hồ sơ (SSMS)

  4. Cách tạo dữ liệu kiểm tra trong SQL Server

  5. Kết nối MSSQL CodeIgniter