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

SQL Server - Sertakan NULL menggunakan UNPIVOT

Untuk mempertahankan NULL, gunakan CROSS JOIN ... KASUS:

select a.ID, b.column_name
, column_value = 
    case b.column_name
      when 'col1' then a.col1
      when 'col2' then a.col2
      when 'col3' then a.col3
      when 'col4' then a.col4
    end
from (
  select ID, col1, col2, col3, col4 
  from table1
  ) a
cross join (
  select 'col1' union all
  select 'col2' union all
  select 'col3' union all
  select 'col4'
  ) b (column_name)

Alih-alih:

select ID, column_name, column_value
From (
  select ID, col1, col2, col3, col4
  from table1
  ) a
unpivot (
  column_value FOR column_name IN (
    col1, col2, col3, col4)
  ) b

Editor teks dengan mode kolom membuat kueri seperti itu lebih mudah untuk ditulis. UltraEdit memilikinya, begitu juga Emacs. Di Emacs, ini disebut edit persegi panjang.

Anda mungkin perlu membuat skrip untuk 100 kolom.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat Kolom "Terakhir Dimodifikasi" di SQL Server

  2. Temukan string dengan mencari semua tabel di SQL Server

  3. KOTAK () Contoh di SQL Server

  4. Nonaktifkan sementara semua batasan kunci asing

  5. Cara menggunakan Operator Logika APAPUN / BEBERAPA di SQL Server - Tutorial SQL Server / TSQL Bagian 127