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 |
satu | 12 | 1230 | sebelas | P1 |
2 | dua puluh satu | 1543 | 22 | P2 |
3 | 32 | 2. 3. 4. 5 | sebelas | P3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | P3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | sebelas | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 | sebelas | P3 |
10 | 56 | 6832 | 33 | P2 |
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 |
sebelas | 1787.75 |
22 | 4654 |
33 | 5238.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 | sebelas | 22 | 33 |
Rata-rata Pelanggan | 1787.75 | 4654 | 5238.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 |
satu | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | satu | 7 |
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.