Rumah > pangkalan data > tutorial mysql > Bagaimana untuk berputar jadual di MySQL: Mengubah baris ke dalam lajur?

Bagaimana untuk berputar jadual di MySQL: Mengubah baris ke dalam lajur?

Patricia Arquette
Lepaskan: 2025-01-25 11:26:10
asal
639 orang telah melayarinya

How to Pivot a Table in MySQL: Transforming Rows into Columns?

Bentuk semula jadual untuk menukar baris kepada lajur

Soalan:

Tukar jadual dengan tiga lajur kepada jadual pangsi, yang mana baris menjadi lajur.

Contoh:

Borang input:

hostid itemname itemvalue
1 A 10
1 B 3
2 A 9
2 C 40

Output yang diperlukan (jadual pangsi):

hostid A B C
1 10 3 0
2 9 0 40

Penyelesaian:

Fungsi pangsi MySQL melibatkan proses tiga langkah:

  1. Pilih lajur yang diminati:
<code class="language-sql">SELECT hostid, itemname, itemvalue
FROM history;</code>
Salin selepas log masuk
  1. Lanjutkan jadual asas dengan lajur tambahan:

Tambahkan lajur yang sepadan dengan setiap nama item unik.

<code class="language-sql">CREATE VIEW history_extended AS (
  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>
Salin selepas log masuk
  1. Jadual lanjutan pengumpulan dan pengagregatan:

Kumpulkan mengikut hos dan jumlahkan nilai dalam setiap lajur.

<code class="language-sql">CREATE VIEW history_itemvalue_pivot AS (
  SELECT
    hostid,
    SUM(A) AS A,
    SUM(B) AS B,
    SUM(C) AS C
  FROM history_extended
  GROUP BY hostid
);</code>
Salin selepas log masuk
  1. Pilihan: cantikkan jadual agregat (gantikan nilai NULL ​​dengan 0)
<code class="language-sql">CREATE VIEW history_itemvalue_pivot_pretty AS (
  SELECT
    hostid,
    COALESCE(A, 0) AS A,
    COALESCE(B, 0) AS B,
    COALESCE(C, 0) AS C
  FROM history_itemvalue_pivot
);</code>
Salin selepas log masuk

Nota dan sekatan:

  • Penyelesaian ini menganggap bahawa lajur pangsi mempunyai nilai tertentu (di sini nilai item).
  • Ia menyokong berbilang nilai y ​​(hostid) tetapi terhad kepada menambah lajur pangsi secara manual.
  • Menjana jadual pangsi dengan bilangan lajur yang banyak boleh mencabar.

Atas ialah kandungan terperinci Bagaimana untuk berputar jadual di MySQL: Mengubah baris ke dalam lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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