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

Memilih Nilai Dari tabel sebagai Header Kolom

Anda tidak menentukan RDBMS, jika Anda mengetahui jumlah kolom yang akan diubah, maka Anda dapat membuat hard-code nilainya:

select FileId,
  max(case when property = 'Name' then value end) Name,
  max(case when property = 'Size' then value end) Size,
  max(case when property = 'Type' then value end) Type
from yourtable
group by FileId

Ini pada dasarnya adalah PIVOT fungsi, beberapa RDBMS akan memiliki PIVOT , jika Anda melakukannya, Anda dapat menggunakan yang berikut, PIVOT tersedia di SQL Server, Oracle:

select *
from 
(
  select FileId, Property, Value
  from yourTable
) x
pivot
(
  max(value)
  for property in ([Name], [Size], [Type])
) p

Jika Anda memiliki jumlah kolom yang tidak diketahui untuk diubah, Anda dapat menggunakan PIVOT dinamis . Ini mendapatkan daftar kolom yang akan diubah saat run-time:

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

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(property) 
                    from yourtable
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT ' + @cols + ' from 
             (
                select FileId, Property, Value
                from yourtable
            ) x
            pivot 
            (
                max(value)
                for Property in (' + @cols + ')
            ) p '

execute(@query)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tetapkan Profil Publik Default untuk Database Mail (SSMS)

  2. SIGN() Contoh di SQL Server

  3. Bagaimana cara memeriksa apakah database dan tabel ada di server sql dalam proyek vb .net?

  4. Menyebarkan Grup Ketersediaan SQL Server AlwaysOn di Linux

  5. Temukan nama tabel di semua objek dari semua database