Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

SQL Pivot – Ketahui cara mengonversi baris menjadi kolom

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Agregat dan Partisi

  2. Penyembunyian Data dalam Aplikasi DB

  3. Pendekatan Prasejarah dan Modern untuk Merancang Basis Data

  4. Cara Menginstal Neo4j di Ubuntu 20.04

  5. SCD Tipe 1