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
679 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:
SELECT hostid, itemname, itemvalue
FROM history;
Salin selepas log masuk
  1. Lanjutkan jadual asas dengan lajur tambahan:

Tambahkan lajur yang sepadan dengan setiap nama item unik.

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
);
Salin selepas log masuk
  1. Jadual lanjutan pengumpulan dan pengagregatan:

Kumpulkan mengikut hos dan jumlahkan nilai dalam setiap lajur.

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
);
Salin selepas log masuk
  1. Pilihan: cantikkan jadual agregat (gantikan nilai NULL ​​dengan 0)
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
);
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!

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