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

Nilai baris SQL Server sebagai nama kolom Pivot Table?

Anda dapat melakukan ini dengan PIVOT fungsi. Jika Anda mengetahui nilai yang ingin Anda ubah menjadi kolom, Anda dapat membuat kode keras menggunakan pivot statis:

select *
from 
(
  select dept, emp_id, emp_name, p_date, hours_worked
  from table1
) x
pivot
(
  max(hours_worked)
  for p_date in ([2012-10-19], [2012-10-20], [2012-10-21])
) p

Lihat SQL Fiddle dengan Demo

Jika Anda memiliki jumlah nilai yang tidak diketahui, maka Anda dapat menggunakan sql dinamis untuk PIVOT datanya:

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

select @cols = STUFF((SELECT distinct ',' 
                        + QUOTENAME(convert(char(10), p_date, 120)) 
                    from table1
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT dept, emp_id, emp_name,' + @cols + ' from 
             (
                select dept, emp_id, emp_name, p_date, hours_worked
                from table1
            ) x
            pivot 
            (
                max(hours_worked)
                for p_date in (' + @cols + ')
            ) p '

execute(@query)

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. Bagaimana menjalankan paket SSIS ketika file tiba di folder

  2. Cara yang lebih baik untuk memeriksa apakah data sudah ada dan masukkan

  3. Cara mengekspor kueri SQL Server 2005 ke CSV

  4. SQL Script untuk menemukan kunci Asing ke tabel tertentu?

  5. Cara menanyakan peran pengguna saat ini