Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menukar Baris ke Lajur dengan Cekap dalam MySQL?

Bagaimanakah Saya Boleh Menukar Baris ke Lajur dengan Cekap dalam MySQL?

Linda Hamilton
Linda Hamiltonasal
2025-01-25 11:37:11783semak imbas

How Can I Efficiently Convert Rows to Columns in MySQL?

MySQL Row Transition Conversion Penjelasan Terperinci

Di MySQL, baris dalam jadual ditukar menjadi lajur, dan langkah -langkah diperlukan.

Langkah 1: Tentukan nilai x dan y

Pertama, tentukan lajur x -value (lajur) dan nilai y (garis) jadual perspektif. Dalam contoh ini, Hostid akan digunakan sebagai nilai, dan nama item akan digunakan sebagai nilai x.

Langkah 2: Tambah tambahan

Tambahkan lajur baru ke setiap nilai x, yang mengandungi nilai yang sepadan. Sebagai contoh, untuk x -value A, B, dan C, tambah lajur A, B, dan C menggunakan pernyataan kes, seperti yang ditunjukkan di bawah:

Langkah 3: Pengumpulan dan Agregasi

<code class="language-sql">SELECT
  history.*,
  CASE WHEN itemname = "A" THEN itemvalue END AS A,
  CASE WHEN itemname = "B" THEN itemvalue END AS B,
  CASE WHEN itemname = "C" THEN itemvalue END AS C
FROM history;</code>
Jadual lanjutan dibayar oleh lajur nilai y (dalam contoh ini), dan lajur baru diagregatkan menggunakan fungsi pempolimeran (seperti jumlah).

Langkah 4: Mencantikkan (Pilihan)

Jika perlu, anda boleh menggunakan nilai neutral (seperti 0) untuk menggantikan sebarang nilai null untuk menjadikan jadual lebih mudah dibaca:
<code class="language-sql">SELECT
  hostid,
  SUM(A) AS A,
  SUM(B) AS B,
  SUM(C) AS C
FROM history_extended
GROUP BY hostid;</code>

Langkah berjaga -jaga lain

Nilai yang digunakan dalam lajur tambahan boleh diselaraskan mengikut keperluan tertentu.
<code class="language-sql">SELECT
  hostid,
  COALESCE(A, 0) AS A,
  COALESCE(B, 0) AS B,
  COALESCE(C, 0) AS C
FROM history_itemvalue_pivot;</code>

Fungsi pempolimeran yang digunakan mungkin berbeza dari hasilnya (seperti kiraan, max). Dengan membuat spekulasi pelbagai lajur dalam kumpulan dengan klausa, pelbagai lajur boleh digunakan sebagai nilai y.

    Walaupun penyelesaian ini baik untuk bilangan jadual perspektif yang terhad, ia akan menjadi sangat rumit untuk jadual dengan sejumlah besar lajur.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Baris ke Lajur dengan Cekap dalam MySQL?. 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