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

Cara Pivot data dari satu tabel dengan SQL server 2005

Ini sebenarnya dapat dilakukan dengan cukup mudah dengan PIVOT fungsi. Karena jawaban lain tidak menunjukkan kode yang terkait dengan cara melakukannya, berikut adalah dua cara untuk PIVOT data.

Pertama adalah dengan Pivot Statis . Pivot statis adalah saat Anda mengetahui data sebelumnya untuk diubah menjadi kolom.

select *
from 
(
    select name, id, convert(char(5), dt, 101) dt, jobid, amount
    from test
) x
pivot
(
    sum(amount)
    for dt in ([01/02], [02/02], [03/02], [04/05], [05/05])
)p
order by jobid, name

Lihat SQL Fiddle dengan Demo

Cara kedua adalah dengan menggunakan PIVOT Dinamis untuk mengidentifikasi pada saat run-time nilai untuk beralih ke kolom.

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

select @cols = STUFF((SELECT distinct ',' + QUOTENAME(convert(char(5), dt, 101)) 
                    from test
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT name, id, ' + @cols + ', jobid from 
             (
                select  name, id, convert(char(5), dt, 101) dt, jobid, amount
                from test
            ) x
            pivot 
            (
                sum(amount)
                for dt in (' + @cols + ')
            ) p 
            order by jobid, name'

execute(@query)

Lihat SQL Fiddle dengan Demo

Keduanya akan menghasilkan hasil yang sama. Dinamis berfungsi dengan baik saat Anda tidak mengetahui nilai sebelumnya untuk mengonversi ke 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. Bagaimana cara memanggil prosedur tersimpan di dalam prosedur tersimpan?

  2. Bagaimana saya bisa mendapatkan catatan bernilai NULL dari sebuah tabel?

  3. Cara Memeriksa Pengaturan Konfigurasi untuk Database Mail di SQL Server (T-SQL)

  4. Cara mengekspor file csv berdasarkan kueri SQL secara terprogram

  5. Bagaimana cara melakukan perbandingan yang tidak sensitif terhadap aksen (misalnya dengan , é, dan ) di SQL Server?