Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Pivot Lajur SQL Menggunakan CASE WHEN untuk Mengubah Data Baris ke Lajur?
Menggunakan CASE WHEN untuk SQL Column Pivoting
Perlu mengubah data SQL anda daripada baris kepada lajur? Pernyataan CASE WHEN
menawarkan penyelesaian yang mudah untuk berputar, terutamanya apabila berurusan dengan jadual yang mengandungi nilai pendua dalam lajur yang memerlukan pengagregatan.
Mari kita ilustrasikan dengan contoh. Bayangkan jadual ini:
<code class="language-sql">Bank: name val amount John 1 2000 Peter 1 1999 Peter 2 1854 John 2 1888</code>
Matlamat kami: menyusun semula ini ke dalam jadual yang nilai "val" unik menjadi lajur dan setiap "nama" unik ialah baris. Output yang dikehendaki:
<code class="language-sql">name amountVal1 amountVal2 John 2000 1888 Peter 1999 1854 </code>
Berikut ialah cara untuk mencapai pangsi ini menggunakan SUM()
dan CASE WHEN
:
<code class="language-sql">SELECT name, SUM(CASE WHEN val = 1 THEN amount ELSE 0 END) AS amountVal1, SUM(CASE WHEN val = 2 THEN amount ELSE 0 END) AS amountVal2 FROM bank GROUP BY name;</code>
Pertanyaan ini menggunakan SUM()
untuk mengagregatkan nilai amount
bagi setiap gabungan name
dan val
unik. Pernyataan CASE WHEN
menyemak sama ada val
ialah 1 atau 2, memperuntukkan amount
yang sepadan dengan sewajarnya. GROUP BY name
memastikan satu baris bagi setiap nama unik. Hasilnya? Lajur amountVal1
dan amountVal2
mewakili data terpangsi dengan kemas. Kaedah ini berkesan untuk bilangan nilai val
yang diketahui dan terhad. Untuk bilangan nilai yang dinamik, pertimbangkan untuk menggunakan PIVOT atau teknik lain yang lebih maju.
Atas ialah kandungan terperinci Bagaimana untuk Pivot Lajur SQL Menggunakan CASE WHEN untuk Mengubah Data Baris ke Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!