Pivot SQL - Ketahui cara menukar baris ke lajur



Artikel mengenai SQL Pivot ini adalah panduan komprehensif mengenai cara menukar data peringkat baris ke data kolumnar dengan contoh mendalam.

Perhubungan menyimpan sejumlah besar data dalam bentuk jadual. Jadual ini boleh mempunyai sebilangan baris dan lajur. Tetapi, bagaimana jika anda perlu mengubah data tingkat baris menjadi data kolumnar? Baiklah, dalam artikel ini mengenai SQL Pivot, saya akan menunjukkan kepada anda bagaimana anda boleh menukar baris ke lajur di SQL Server.

Topik berikut akan dibahas dalam artikel ini:





Apakah PIVOT dalam SQL?

PIVOT digunakan untuk memutar nilai jadual dengan menukar nilai unik satu lajur menjadi beberapa lajur. Ini digunakan untuk memutar baris ke nilai lajur dan menjalankan agregasi apabila diperlukan pada nilai lajur yang tersisa.

UNPIVOT, sebaliknya, digunakan untuk menjalankan operasi yang sebaliknya. Jadi, ia digunakan untuk menukar lajur jadual tertentu menjadi nilai lajur.



Melanjutkan artikel ini, mari kita memahami sintaks SQL Pivot.

Sintaks:

SELECT NonPivited ColumnName, [First Pivot ColumnName] AS ColumnName, [Second Pivoted ColumnName] AS ColumnName, [Third Pivited ColumnName] AS ColumnName, ... [Nama Terpilih Terakhir] AS ColumnName DARI (SELECT query yang menghasilkan data) AS [alias untuk pertanyaan awal] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName lajur yang nilainya akan menjadi tajuk lajur] IN ([First Pivot ColumnName], [Second Pivoting ColumnName], [Third Pivoting ColumnName] ... [terakhir lajur berpusing])) AS [alias untuk Jadual Pangsi]

Di sini,anda juga boleh menggunakan PESANAN OLEH klausa untuk menyusun nilai sama ada mengikut urutan menaik atau menurun. Sekarang setelah anda mengetahui apa itu PIVOT dalam SQL dan sintaksis asasnya, mari kita terus maju dan melihat bagaimana menggunakannya.

Contoh

Untuk pemahaman anda yang lebih baik, saya akan mempertimbangkan jadual berikut untuk menjelaskan kepada anda semua contohnya.



Jadual Pembekal:

PembekalID Hari-hari Pembuatan Kos ID pelanggan PembelianID
satu121230sebelasP1
2dua puluh satu154322P2
3322. 3. 4. 5sebelasP3
414876522P1
542345233P3
631543133P1
7412342sebelasP2
854365422P2
9331234sebelasP3
1056683233P2

Marilah kita menulis pertanyaan mudah untuk mendapatkan kos purata yang dibelanjakan oleh setiap pelanggan.

PILIHIDID Pelanggan, AVG (Kos) SEBAGAI Rata-RataKos PelangganMelalui Pembekal KUMPULAN OLEH Pelanggan

Pengeluaran:

ID pelanggan Rata-rata Pelanggan
sebelas1787.75
224654
335238.33

Sekarang, katakan kita mahu memutar jadual di atas. Di sini, nilai lajur CustomerID akan menjadi tajuk lajur.

- Buat jadual Pivot dengan satu baris dan tiga lajur PILIH 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33] FROM (SELECT CustomerID, Cost FROM Suppliers) AS SourceTable PIVOT (AVG (Cost) FOR CustomerID IN ( [11], [22], [33])) AS PivotTable

Pengeluaran:

Kos_Akta_Tahuk_Pelanggan sebelas2233
Rata-rata Pelanggan 1787.7546545238.33

Catatan: Semasa anda menggunakan fungsi agregat dengan PIVOT, nilai nol tidak dipertimbangkan semasa mengira agregasi.

Baiklah, itu adalah contoh asas, tetapi marilah kita sekarang memahami bagaimana klausa PIVOT berfungsi.

Bekerja fasal PIVOT

Seperti yang anda rujuk di atas, untuk membuat PIVOT TABLE, anda perlu mengikuti langkah-langkah berikut:

  • Pilih lajur untuk berpusing
  • Kemudian, pilih jadual sumber.
  • Gunakan operator PIVOT, dan kemudian gunakan fungsi agregat.
  • Sebutkan nilai pangsi.

Pilih lajur untuk berpusing

Pada mulanya, kita harus menentukan bidang yang akan dimasukkan dalam hasil kita. Dalam contoh kami, saya mempertimbangkan lajur AverageCostofCustomer dalam jadual Pivot. Kemudian kami membuat tiga lajur lain dengan tajuk lajur 11, 22, dan 33. Contoh-

PILIH 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33]

Pilih jadual sumber

Seterusnya, anda harus menentukan pernyataan SELECT yang akan mengembalikan data sumber untuk jadual pangsi. Dalam contoh kami, kami mengembalikan ID Pelanggan dan Kos dari jadual Pembekal.

(PILIH ID Pelanggan, Kos DARI Pembekal) SEBAGAI Jadual Sumber

Gunakan operator PIVOT, dan kemudian gunakan fungsi agregat

Seterusnya, anda harus menentukan fungsi agregat yang akan digunakan semasa membuat jadual pangsi. Dalam contoh kami, saya telah menggunakan fungsi AVG untuk mengira kos purata.

PIVOT (AVG (Kos)

Sebutkan nilai pangsi

Akhirnya, anda harus menyebutkan nilai-nilai yang harus dimasukkan dalam jadual pangsi yang dihasilkan. Nilai-nilai ini akan digunakan sebagai tajuk lajur dalam jadual pangsi.

UNTUK CustomerID IN ([11], [22], [33])) SEBAGAI PivotTable

Begitulah cara pengendali PIVOT berfungsi. Melanjutkan artikel ini mengenai SQL PIVOT, marilah kita memahami betapa bezanya dengan SQL UNPIVOT.

SQL UNPIVOT

Pengendali SQL UNPIVOT digunakan untuk menjalankan operasi yang berlawanan dengan operasi PIVOT. Ini digunakan untuk memutar data lajur menjadi data tingkat baris. Sintaks, UNPIVOT, serupa dengan PIVOT. Satu-satunya perbezaan ialah anda mesti menggunakan ' UNPIVOT ” .

Contoh:

Mari kita buat jadual dengan lajur SupplierID, AAA, BBB, dan CCC. Masukkan juga beberapa nilai.

CREATE TABLE sampletable (SupplierID int, AAA int, BBB int, CCC int) GO INSERT INTO NILU sampletable (1,3,5,6) INSERT INTO NILU sampletable (2,9,2,8) INSERT INTO NILU sampletable (3, 8,1,7) PERGI

Pengeluaran:

PembekalID AAA BBB CCC
satu356
2928
38satu7

Sekarang, mari kita katakan, kita mahu membongkar jadual. Untuk melakukannya, anda boleh merujuk kepada kod berikut:

SELECT Pembekal, Pelanggan, Produk DARI (SELECT SupplierD, AAA, BBB, CCC FROM sampletable) p UNPIVOT (Produk UNTUK Pelanggan DI (AAA, BBB, CCC)) SEBAGAI contoh GO
PembekalID Pelanggan Produk

satu

AAA

3

satu

BBB

5

satu

CCC

6

2

AAA

9

2

BBB

2

2

CCC

8

3

AAA

cara menguraikan xml di java

8

3

BBB

satu

3

CCC

7

Itulah cara anda boleh menggunakan SQL PIVOT dan UNPIVOT. Dengan ini, kami mengakhiri artikel ini. Saya harap anda faham, bagaimana menggunakan SQL. Sekiranya anda ingin mengetahui lebih lanjut mengenai MySQL dan kenali pangkalan data hubungan sumber terbuka ini, kemudian periksa kami yang dilengkapi dengan latihan langsung yang dipimpin oleh instruktur dan pengalaman projek kehidupan sebenar. Latihan ini akan membantu anda memahami MySQL secara mendalam dan membantu anda mencapai penguasaan terhadap subjek ini.

Ada soalan untuk kami? Sila sebutkan di bahagian komen artikel ini di SQL Pivot dan saya akan menghubungi anda.