Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengubah Jadual SQL Menggunakan CASE WHEN untuk Mengelakkan Baris Pendua?
Gunakan pernyataan CASE WHEN dalam SQL untuk melaksanakan pangsi lajur
Operasi pangsi dalam SQL merujuk kepada menukar lajur tersusun menegak dalam jadual data kepada lajur tersusun mendatar. Ini biasanya dicapai menggunakan pernyataan CASE WHEN.
Andaikan terdapat jadual dengan tiga lajur: nama, nilai dan amaun. Matlamatnya adalah untuk mengubah data menjadi perwakilan baharu: setiap baris mewakili nama dan setiap lajur mewakili nilai khusus dalam lajur val, seperti 'Val1' dan 'Val2'.
Anda telah mencuba menulis pertanyaan awal menggunakan pernyataan CASE WHEN, tetapi hasilnya tidak betul. Secara khusus, baris untuk John dan Peter diulang dua kali, dengan satu baris mengandungi nilai amaun yang dikaitkan dengan val = 1 dan baris lain mengandungi nilai amaun yang dikaitkan dengan val = 2.
Untuk menyelesaikan masalah ini, kita boleh menggunakan fungsi agregat SUM() bersama-sama dengan pernyataan CASE WHEN. Dengan menjumlahkan amaun yang dikaitkan dengan setiap nilai val, kami mengumpulkan baris dengan berkesan untuk setiap nama dan menggabungkan nilai ke dalam satu lajur.
Pertanyaan yang diubah suai berikut akan menghasilkan hasil yang diingini:
<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 menjumlahkan amaun setiap nilai val dalam setiap kumpulan nama dan mendapat output berikut:
name | amountVal1 | amountVal2 |
---|---|---|
John | 2000 | 1888 |
Peter | 1999 | 1854 |
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Jadual SQL Menggunakan CASE WHEN untuk Mengelakkan Baris Pendua?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!