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

Bagaimana cara membuat PivotTable di Transact/SQL?

Anda perlu menggunakan PIVOT . Anda dapat menggunakan PIVOT STATIS di mana Anda mengetahui nilai kolom yang akan diubah atau PIVOT DINAMIS di mana kolom tidak diketahui hingga waktu eksekusi.

Pivot Statis (Lihat SQL Fiddle dengan Demo ):

select *
from 
(
    select memid, Condition_id, Condition_Result
    from t
) x
pivot
(
    sum(condition_result)
    for condition_id in ([C1], [C2], [C3], [C4])
) p

Pivot Dinamis (Lihat SQL Fiddle dengan Demo ):

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

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


set @query = 'SELECT memid, ' + @cols + ' from 
            (
                select MemId, Condition_id, condition_result
                from t
           ) x
            pivot 
            (
                sum(condition_result)
                for condition_id in (' + @cols + ')
            ) p '


execute(@query)

Keduanya akan menghasilkan hasil yang sama.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan nama definitif untuk kolom dari variabel tabel

  2. Cara memilih tanggal tanpa waktu di SQL

  3. Bagaimana Anda menghitung jumlah kemunculan substring tertentu dalam varchar SQL?

  4. Mengapa tidak menggunakan varchar (maks)?

  5. Bagaimana cara menjalankan prosedur tersimpan MSSQL dengan ADOdb PHP Library?