Rumah > pangkalan data > tutorial mysql > Bagaimanakah pengendali PIVOT SQL Server boleh membentuk semula data daripada berbilang lajur ke dalam format berorientasikan baris?

Bagaimanakah pengendali PIVOT SQL Server boleh membentuk semula data daripada berbilang lajur ke dalam format berorientasikan baris?

Mary-Kate Olsen
Lepaskan: 2024-12-25 18:36:13
asal
623 orang telah melayarinya

How can SQL Server's PIVOT operator reshape data from multiple columns into a row-oriented format?

Menyingkap Rahsia PIVOT dalam SQL Server

Selalunya, kami menghadapi set data di mana data distrukturkan dengan cara yang menjadikannya mencabar untuk menganalisis dan mempersembahkan dalam format yang bermakna. Satu senario sedemikian timbul apabila data disusun ke dalam berbilang lajur, setiap satu mewakili nilai yang berbeza untuk kategori tertentu. Untuk mengubah set data ini menjadi jadual dengan kategori sebagai lajur dan nilai sebagai baris, kami boleh menggunakan operator PIVOT dalam SQL Server.

Mari kita pertimbangkan senario di mana kita mempunyai jadual bernama "mytable" dengan lajur "Name1" , "Nama2", dan "Nilai". Data dalam jadual ini mewakili pelbagai nilai ("P1", "P2", "P3", "P4") yang dikaitkan dengan nama berbeza ("A" dan "B"):

Name1  Name2  Value
A      P1     1
A      P2     1
A      P3     2
B      P1     3
B      P2     1
B      P4     1
Salin selepas log masuk

Matlamat kami adalah untuk menstruktur semula data ini ke dalam format berikut:

       A     B
P1     1     4
P2     1     1
P3     2     NULL
P4     NULL  1
Salin selepas log masuk

Dalam SQL Server 2005, kami boleh memanfaatkan pembinaan pertanyaan dinamik untuk mencapai transformasi ini menggunakan PIVOT. Berikut ialah panduan langkah demi langkah:

  1. Kumpul Rentetan Nama Lajur yang Dipisahkan Koma: Jalankan pertanyaan berikut untuk mencipta rentetan yang mengandungi semua "Name1" yang berbeza " nilai dipisahkan oleh koma:

    DECLARE @cols VARCHAR(1000)
    SELECT  @cols = STUFF(( SELECT distinct  ',' + QuoteName([Name1])
                         FROM myTable FOR XML PATH('') ), 1, 1, '') 
    Salin selepas log masuk
  2. Bina Pertanyaan SQL Dinamik: Cipta pembolehubah bernama @sqlquery dan tetapkan templat pertanyaan berikut:

    DECLARE @sqlquery VARCHAR(2000)
    SET @sqlquery = 'SELECT * FROM
       (SELECT Name2, Name1, Value
        FROM myTable ) base
        PIVOT (Sum(Value) FOR [Name1]
        IN (' + @cols + ')) AS finalpivot'
    Salin selepas log masuk
  3. Laksanakan Pertanyaan Dinamik: Laksanakan Pembolehubah @sqlquery menggunakan EXECEUTE (@sqlquery) untuk menjana jadual pangsi.

Pendekatan ini membina klausa PIVOT secara dinamik berdasarkan nilai yang berbeza dalam lajur "Name1". Fungsi PIVOT menjumlahkan lajur "Nilai" untuk setiap kategori "Nama1", dan hasilnya ialah jadual di mana nilai "Nama2" berfungsi sebagai tajuk baris dan kategori "Nama1" membentuk tajuk lajur.

Sebagai umum peraturan, PIVOT boleh digunakan apabila anda perlu mengubah data daripada struktur berorientasikan lajur kepada struktur berorientasikan baris. Teknik ini boleh memudahkan analisis data dan tugasan pembentangan dengan ketara.

Atas ialah kandungan terperinci Bagaimanakah pengendali PIVOT SQL Server boleh membentuk semula data daripada berbilang lajur ke dalam format berorientasikan baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan