Basis data relasional menyimpan sejumlah besar data dalam bentuk tabel. Tabel ini dapat memiliki sejumlah baris dan kolom. Namun, bagaimana jika Anda harus mengubah data tingkat baris menjadi data kolom? Nah, dalam artikel tentang SQL Pivot ini, saya akan menunjukkan kepada Anda bagaimana Anda dapat mengubah baris menjadi kolom di SQL Server.
Topik berikut akan dibahas dalam artikel ini:
- Apa itu PIVOT dalam SQL?
- Sintaks
- Contoh
- Pengerjaan Klausa PIVOT
- SQL UNPIVOT
Apa itu PIVOT dalam SQL?
PIVOT digunakan untuk memutar nilai tabel dengan mengonversi nilai unik dari satu kolom menjadi beberapa kolom. Ini digunakan untuk memutar baris ke nilai kolom dan menjalankan agregasi bila diperlukan pada nilai kolom yang tersisa.
UNPIVOT, di sisi lain, digunakan untuk melakukan operasi yang berlawanan. Jadi, ini digunakan untuk mengonversi kolom dari tabel tertentu ke nilai kolom.
Berlanjut di artikel ini, mari kita pahami sintaks SQL Pivot.
Sintaks:
SELECT NonPivoted ColumnName, [First Pivoted ColumnName] AS ColumnName, [Second Pivoted ColumnName] AS ColumnName, [Third Pivoted ColumnName] AS ColumnName, ... [Last Pivoted ColumnName] AS ColumnName FROM (SELECT query which produces the data) AS [alias for the initial query] PIVOT ( [AggregationFunction](ColumName) FOR [ColumnName of the column whose values will become column headers] IN ( [First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [last pivoted column]) ) AS [alias for the Pivot Table];
Di sini, Anda juga dapat menggunakan klausa ORDER BY untuk mengurutkan nilai dalam urutan menaik atau menurun. Sekarang setelah Anda mengetahui apa itu PIVOT dalam SQL dan sintaks dasarnya, mari kita lanjutkan dan lihat cara menggunakannya.
Contoh
Untuk pemahaman Anda yang lebih baik, saya akan mempertimbangkan tabel berikut untuk menjelaskan semua contoh.
Tabel Pemasok:
ID Pemasok | DaysofManufacture | Biaya | IDPelanggan | ID Pembelian |
1 | 12 | 1230 | 11 | P1 |
2 | 21 | 1543 | 22 | P2 |
3 | 32 | 2345 | 11 | P3 |
4 | 14 | 8765 | 22 | P1 |
5 | 42 | 3452 | 33 | P3 |
6 | 31 | 5431 | 33 | P1 |
7 | 41 | 2342 | 11 | P2 |
8 | 54 | 3654 | 22 | P2 |
9 | 33 | 1234 | 11 | P3 |
10 | 56 | 6832 | 33 | P2 |
Mari kita menulis kueri sederhana untuk mendapatkan kembali biaya rata-rata yang dikeluarkan oleh setiap pelanggan.
SELECT CustomerID, AVG(Cost) AS AverageCostofCustomer FROM Suppliers GROUP BY CustomerID;
Keluaran:
ID Pelanggan | AverageCostofCustomer |
11 | 1787.75 |
22 | 4654 |
33 | 5238.33 |
Sekarang, katakanlah kita ingin memutar tabel di atas. Di sini, nilai kolom CustomerID akan menjadi header kolom.
-- Create Pivot table with one row and three columns SELECT '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;
Keluaran:
Cost_According_To_Customers | 11 | 22 | 33 |
Biaya Rata-RataPelanggan | 1787,75 | 4654 | 5238.33 |
Catatan: Saat Anda menggunakan fungsi agregat dengan PIVOT, nilai nol tidak dipertimbangkan saat menghitung agregasi.
Nah, itu adalah contoh dasar, tapi sekarang mari kita pahami cara kerja klausa PIVOT.
Kerja klausa PIVOT
Seperti yang Anda lihat di atas, untuk membuat TABEL PIVOT, Anda harus mengikuti langkah-langkah di bawah ini:
- Pilih kolom untuk diputar
- Kemudian, pilih tabel sumber.
- Terapkan operator PIVOT, lalu gunakan fungsi agregat.
- Sebutkan nilai pivot.
Pilih kolom untuk diputar
Awalnya, kita harus menentukan bidang yang akan disertakan dalam hasil kita. Dalam contoh kita, saya mempertimbangkan kolom AverageCostofCustomer di tabel Pivot. Kemudian kita buat tiga kolom lainnya dengan header kolom 11, 22, dan 33. Contoh-
SELECT 'AverageCostofCustomer' AS Cost_According_To_Customers, [11], [22], [33]
Pilih tabel sumber
Selanjutnya, Anda harus menentukan pernyataan SELECT yang akan mengembalikan data sumber untuk tabel pivot. Dalam contoh kami, kami mengembalikan ID Pelanggan dan Biaya dari tabel Pemasok.
(SELECT CustomerID, Cost FROM Suppliers) AS SourceTable
Terapkan operator PIVOT, lalu gunakan fungsi agregat
Selanjutnya, Anda harus menentukan fungsi agregat yang akan digunakan saat membuat tabel pivot. Dalam contoh kita, saya telah menggunakan fungsi AVG untuk menghitung biaya rata-rata.
PIVOT ( AVG(Cost)
Sebutkan nilai pivot
Terakhir, Anda harus menyebutkan nilai yang harus disertakan dalam tabel pivot yang dihasilkan. Nilai-nilai ini akan digunakan sebagai judul kolom di tabel pivot.
FOR CustomerID IN ([11], [22], [33]) ) AS PivotTable;
Begitulah cara kerja operator PIVOT. Melanjutkan artikel tentang SQL PIVOT ini, mari kita pahami perbedaannya dengan SQL UNPIVOT.
SQL UNPIVOT
Operator SQL UNPIVOT digunakan untuk melakukan operasi yang berlawanan dengan PIVOT. Ini digunakan untuk memutar data kolom menjadi data tingkat baris. Sintaks UNPIVOT mirip dengan PIVOT. Satu-satunya perbedaan adalah Anda harus menggunakan Kata Kunci SQL “UNPIVOT” .
Contoh:
Mari kita buat tabel dengan kolom SupplierID, AAA, BBB, dan CCC. Juga, masukkan beberapa nilai.
CREATE TABLE sampletable (SupplierID int, AAA int, BBB int, CCC int); GO INSERT INTO sampletable VALUES (1,3,5,6); INSERT INTO sampletable VALUES (2,9,2,8); INSERT INTO sampletable VALUES (3,8,1,7); GO
Keluaran:
ID Pemasok | AAA | BBB | CCC |
1 | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | 1 | 7 |
Sekarang, katakanlah, kita ingin membatalkan pivot tabel. Untuk melakukannya, Anda dapat merujuk ke kode berikut:
SELECT SupplierID, Customers, Products FROM (SELECT SupplierD, AAA, BBB, CCC FROM sampletable) p UNPIVOT (Products FOR Customers IN (AAA, BBB, CCC) )AS example; GO
ID Pemasok | Pelanggan | Produk | ||
1 | AAA | 3 | ||
1 | BBB | 5 | ||
1 | CCC | 6 | ||
2 | AAA | 2 | BBB | 2 |
2 | CCC | 8 | ||
3 | AAA | 8 | ||
3 | BBB | 1 | ||
3 | CCC | 7 |
Begitulah cara menggunakan SQL PIVOT dan UNPIVOT. Dengan ini, kami mengakhiri artikel ini. Saya harap Anda mengerti, bagaimana menggunakan SQL. Jika Anda ingin mempelajari lebih lanjut tentang MySQL dan mengenal database relasional sumber terbuka ini, lihat Pelatihan Sertifikasi DBA MySQL kami yang dilengkapi dengan pelatihan langsung yang dipimpin instruktur dan pengalaman proyek kehidupan nyata. Pelatihan ini akan membantu Anda memahami MySQL secara mendalam dan membantu Anda menguasai subjek tersebut.
Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar artikel ini tentang SQL Pivot dan saya akan menghubungi Anda kembali.