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

Mentransposisi Baris ke dalam kolom di SQL Server 2005

Anda perlu melakukan PIVOT . Ada dua cara untuk melakukannya dengan PIVOT, baik Pivot Statis tempat Anda mengkodekan kolom yang akan diubah atau Pivot Dinamis yang menentukan kolom saat dieksekusi.

Pivot Statis:

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

Lihat SQL Fiddle dengan Demo

Pivot Dinamis:

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)

Lihat SQL Fiddle dengan Demo

Jika Anda tidak ingin menggunakan PIVOT fungsi, maka Anda dapat melakukan jenis kueri serupa dengan CASE pernyataan:

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

Lihat SQL Fiddle dengan Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemulihan Cadangan Paralel SQL Server -1

  2. Ekspor data dari SQL Server ke Excel dan file Teks menggunakan paket SSIS

  3. Bagaimana cara menghasilkan nomor acak untuk setiap baris dalam pemilihan T-SQL?

  4. Menghubungkan aplikasi inti ASP.NET Anda ke instance lokal SQLServer

  5. Hitung jumlah tahun dari tanggal tertentu SQL