Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Pivot Lajur SQL Menggunakan CASE WHEN untuk Mengubah Data Baris ke Lajur?

Bagaimana untuk Pivot Lajur SQL Menggunakan CASE WHEN untuk Mengubah Data Baris ke Lajur?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-11 16:02:46843semak imbas

How to Pivot a SQL Column Using CASE WHEN to Transform Row Data into Columns?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn