Rumah > pangkalan data > tutorial mysql > Bagaimanakah Operator PIVOT SQL Server Boleh Mengubah Baris ke Lajur?

Bagaimanakah Operator PIVOT SQL Server Boleh Mengubah Baris ke Lajur?

Linda Hamilton
Lepaskan: 2024-12-17 13:49:11
asal
204 orang telah melayarinya

How Can SQL Server's PIVOT Operator Transpose Rows into Columns?

Memindahkan Baris ke Lajur dengan Pangsi Pelayan SQL?

Dalam Pelayan SQL, pengendali PIVOT ialah alat yang berkuasa untuk menyusun semula data jadual daripada baris kepada lajur. Ia amat berguna apabila anda perlu meringkaskan data merentas berbilang baris untuk set lajur tertentu.

Untuk menggambarkan, pertimbangkan jadual berikut:

| 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

Andaikan kami ingin mengubahnya data ke dalam format berikut:

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

Untuk mencapai transformasi ini, kami boleh menggunakan operator PIVOT sebagai berikut:

DECLARE @cols VARCHAR(1000)
DECLARE @sqlquery VARCHAR(2000)

SELECT  @cols = STUFF(( SELECT distinct  ',' + QuoteName([Name1])
                        FROM myTable FOR XML PATH('') ), 1, 1, '') 


SET @sqlquery = 'SELECT * FROM
      (SELECT Name2, Name1, Value
       FROM myTable ) base
       PIVOT (Sum(Value) FOR [Name1]
       IN (' + @cols + ')) AS finalpivot'

EXECUTE ( @sqlquery )
Salin selepas log masuk

Dengan memasang pertanyaan secara dinamik, kaedah ini membolehkan kami memutar data dengan set lajur yang berbeza, menyediakan penyelesaian yang fleksibel dan berskala.

Atas ialah kandungan terperinci Bagaimanakah Operator PIVOT SQL Server Boleh Mengubah Baris ke Lajur?. 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