Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengubah Data Lajur MySQL menjadi Jadual Pangsi Berasaskan Baris?

Bagaimana untuk Mengubah Data Lajur MySQL menjadi Jadual Pangsi Berasaskan Baris?

Linda Hamilton
Linda Hamiltonasal
2025-01-09 15:02:43183semak imbas

How to Transform MySQL Column Data into a Row-Based Pivot Table?

Tukar data lajur MySQL kepada format baris (jadual pangsi)

Artikel ini menerangkan cara menukar jadual MySQL yang mengandungi data berbilang lajur kepada data format baris dan lajur. Struktur yang terhasil dipanggil jadual pangsi, dan ia memberikan pandangan data yang ringkas namun komprehensif.

Pernyataan masalah:

Kami mempunyai jadual dengan berbilang lajur, setiap lajur mewakili kategori data, matlamat kami adalah untuk menukarnya kepada format jadual pangsi, di mana baris mewakili kategori (col1, col2, col3, col4) dan lajur mewakili bulan ( Jan , Feb).

Rangka Kerja Penyelesaian:

Untuk melaksanakan penukaran ini dalam MySQL kita mesti mengikuti proses dua langkah berikut:

Anti-Perspektif (UNION ALL):

  1. Pisah lajur input (col1, col2, dll.) ke dalam baris yang berasingan, buat lajur baharu ("huraikan") untuk kategori dan lajur lain untuk nilai yang sepadan. Gunakan operator UNION ALL untuk menggabungkan baris ini ke dalam satu jadual.

Perspektif (pengagregatan dan KES):

  1. Gunakan fungsi agregat, seperti MAX(), pada jadual nyahpangsi sambil menggunakan penyata CASE untuk menentukan nilai mana yang dimiliki oleh bulan tersebut. Ini membolehkan kami membuat lajur yang diperlukan (Jan, Feb).

Pertanyaan yang dilaksanakan:

Anti-Perspektif (UNION ALL):

<code class="language-sql">SELECT
  id,
  month,
  col1 AS value,
  'col1' AS descrip
FROM
  yourtable
UNION ALL
SELECT
  id,
  month,
  col2 AS value,
  'col2' AS descrip
FROM
  yourtable
UNION ALL
SELECT
  id,
  month,
  col3 AS value,
  'col3' AS descrip
FROM
  yourtable
UNION ALL
SELECT
  id,
  month,
  col4 AS value,
  'col4' AS descrip
FROM
  yourtable;</code>

Perspektif (pengagregatan dan KES):

<code class="language-sql">SELECT
  descrip,
  MAX(CASE WHEN month = 'Jan' THEN value ELSE 0 END) AS Jan,
  MAX(CASE WHEN month = 'Feb' THEN value ELSE 0 END) AS Feb
FROM
  (
    SELECT
      id,
      month,
      col1 AS value,
      'col1' AS descrip
    FROM
      yourtable
    UNION ALL
    SELECT
      id,
      month,
      col2 AS value,
      'col2' AS descrip
    FROM
      yourtable
    UNION ALL
    SELECT
      id,
      month,
      col3 AS value,
      'col3' AS descrip
    FROM
      yourtable
    UNION ALL
    SELECT
      id,
      month,
      col4 AS value,
      'col4' AS descrip
    FROM
      yourtable
  ) AS source
GROUP BY
  descrip;</code>

Keputusan:

Pertanyaan ini akan menukar jadual input kepada format jadual pangsi:

DESCRIP Jan Feb
col1 A C
col2 B A
col3 0 G
col4 B E

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Data Lajur MySQL menjadi Jadual Pangsi Berasaskan Baris?. 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