Relasional menyimpan data dalam jumlah besar dalam bentuk tabel. Tabel ini dapat memiliki sejumlah baris dan kolom. Tetapi, bagaimana jika Anda harus mengubah data tingkat baris menjadi data kolom? Nah, dalam artikel ini di SQL Pivot, saya akan menunjukkan kepada Anda bagaimana Anda dapat mengonversi baris ke kolom di SQL Server.
Topik berikut akan dibahas dalam artikel ini:
Apa PIVOT di SQL?
PIVOT digunakan untuk memutar nilai tabel dengan mengubah nilai unik dari satu kolom menjadi beberapa kolom. Ini digunakan untuk memutar baris ke nilai kolom dan menjalankan agregasi saat diperlukan pada nilai kolom yang tersisa.
UNPIVOT, sebaliknya, digunakan untuk melakukan operasi yang berlawanan. Jadi, ini digunakan untuk mengubah kolom dari tabel tertentu menjadi nilai kolom.
Lanjut ke artikel ini, mari kita pahami sintaks SQL Pivot.
Sintaksis:
PILIH Nama Kolom Tidak Berputar, [Nama Kolom Berputar Pertama] sebagai Nama Kolom, [Nama Kolom Berputar Kedua] sebagai Nama Kolom, [Nama Kolom Berputar Ketiga] sebagai Nama Kolom, ... [Nama Kolom Putar Terakhir] sebagai Nama Kolom DARI (kueri SELECT yang menghasilkan data) AS [alias untuk kueri awal] PIVOT ([AggregationFunction] (ColumName) FOR [ColumnName dari kolom yang nilainya akan menjadi tajuk kolom] IN ([First Pivoted ColumnName], [Second Pivoted ColumnName], [Third Pivoted ColumnName] ... [last kolom berputar])) AS [alias untuk Tabel Pivot]
Sini,Anda juga bisa menggunakan ORDER BY klausa untuk mengurutkan nilai dalam urutan naik atau turun. 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:
SupplierID | DaysofManufacture | Biaya | ID Pelanggan | PurchaseID |
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 |
Mari kita tulis kueri sederhana untuk mengambil biaya rata-rata yang dihabiskan oleh setiap pelanggan.
PILIH ID Pelanggan, AVG (Biaya) SEBAGAI Biaya Rata-Rata Pelanggan DARI KELOMPOK Pemasok MENURUT ID Pelanggan
Keluaran:
ID Pelanggan | AverageCostofCustomer |
sebelas | 1787.75 |
22 | 4654 |
33 | 5238.33 |
Sekarang, misalkan kita ingin melakukan pivot pada tabel di atas. Di sini, nilai kolom ID Pelanggan akan menjadi tajuk kolom.
- Buat tabel Pivot dengan satu baris dan tiga kolom 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])) SEBAGAI PivotTable
Keluaran:
Cost_According_To_Customers | sebelas | 22 | 33 |
AverageCostofCustomer | 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 bagaimana klausa PIVOT bekerja.
Bekerja dari klausul PIVOT
Seperti yang Anda lihat di atas, untuk membuat TABEL PIVOT, Anda harus mengikuti langkah-langkah di bawah ini:
- Pilih kolom untuk pivot
- Lalu, pilih tabel sumber.
- Terapkan operator PIVOT, lalu gunakan fungsi agregat.
- Sebutkan nilai pivot.
Pilih kolom untuk pivot
Awalnya, kami harus menentukan bidang yang akan disertakan dalam hasil kami. Dalam contoh kami, saya mempertimbangkan kolom AverageCostofCustomer di tabel Pivot. Kemudian kami membuat tiga kolom lainnya dengan judul kolom 11, 22, dan 33. Contoh-
PILIH '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.
(PILIH ID Pelanggan, Biaya DARI Pemasok) sebagai Tabel Sumber
Terapkan operator PIVOT, lalu gunakan fungsi agregat
Selanjutnya, Anda harus menentukan fungsi agregat yang akan digunakan saat membuat tabel pivot. Dalam contoh kami, saya telah menggunakan fungsi AVG untuk menghitung biaya rata-rata.
PIVOT (AVG (Biaya)
Sebutkan nilai pivot
Terakhir, Anda harus menyebutkan nilai yang harus disertakan dalam tabel pivot yang dihasilkan. Nilai-nilai ini akan digunakan sebagai tajuk kolom di tabel pivot.
UNTUK ID Pelanggan DI ([11], [22], [33])) SEBAGAI PivotTable
Begitulah cara kerja operator PIVOT. Melanjutkan artikel tentang SQL PIVOT ini, mari kita pahami betapa berbedanya dengan SQL UNPIVOT.
SQL UNPIVOT
Operator SQL UNPIVOT digunakan untuk melakukan operasi kebalikan dari PIVOT. Ini digunakan untuk memutar data kolom menjadi data tingkat baris. Sintaks UNPIVOT mirip dengan PIVOT. Satu-satunya perbedaan adalah Anda harus menggunakan file ' UNPIVOT ” .
Contoh:
Mari kita buat tabel dengan kolom SupplierID, AAA, BBB, dan CCC. Juga, masukkan beberapa nilai.
BUAT TABEL 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) PERGI
Keluaran:
SupplierID | AAA | BBB | CCC |
satu | 3 | 5 | 6 |
2 | 9 | 2 | 8 |
3 | 8 | satu | 7 |
Sekarang, katakanlah, kami ingin memisahkan tabel. Untuk melakukan itu, Anda dapat merujuk ke kode berikut:
PILIH SupplierID, Pelanggan, Produk DARI (PILIH PemasokD, AAA, BBB, CCC DARI sampletable) p UNPIVOT (Produk UNTUK Pelanggan DI (AAA, BBB, CCC)) SEBAGAI contoh GO
SupplierID | Pelanggan | Produk |
satu | AAA | 3 |
satu | BBB | 5 |
satu | CCC | 6 |
2 | AAA | 9 |
2 | BBB | 2 |
2 | CCC metode kelas pemindai mana yang membaca string? | 8 |
3 | AAA | 8 |
3 | BBB | satu |
3 | CCC | 7 |
Begitulah cara Anda 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 kenali basis data relasional sumber terbuka ini, lalu lihat 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.
Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar artikel ini di SQL Pivot dan saya akan menghubungi Anda kembali.