Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengubah Jadual SQL Menggunakan CASE WHEN untuk Mengelakkan Baris Pendua?

Bagaimanakah Saya Boleh Mengubah Jadual SQL Menggunakan CASE WHEN untuk Mengelakkan Baris Pendua?

Barbara Streisand
Lepaskan: 2025-01-11 15:47:43
asal
1033 orang telah melayarinya

How Can I Pivot a SQL Table Using CASE WHEN to Avoid Duplicate Rows?

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:

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
Salin selepas log masuk

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!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan