Cabaran
: Cari data dalam jadual MySQL dalam formula bentuk perspektif, dan tukar baris ke dalam lajur.Soalan :
diberi jadual yang mengandungi hostid, itemName, dan lajur item, sila tekan hasil seperti yang ditunjukkan di bawah:
penyelesaian:
hostid | A | B | C |
---|---|---|---|
1 | 10 | 3 | 0 |
2 | 9 | 0 | 40 |
OK akan menyediakan lajur yang akan memberikan nilai y dan nilai x (itemName).
Langkah 2: Lanjutkan Jadual Asas
Buat lajur tambahan untuk setiap nilai x unik.
Langkah 3: Pengumpulan dan Agregasi
GroupID (HostID) dan mengagregatkan jadual lanjutan.
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;
Gantikan nilai null ke sifar untuk mendapatkan penampilan yang lebih jelas.
<事> Langkah berjaga -jaga dan sekatan
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;
Nilai yang digunakan dalam lajur lanjutan dan nilai lalai nilai yang hilang boleh disesuaikan.
anda boleh menyesuaikan fungsi pempolimeran (contohnya, max).
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;
Atas ialah kandungan terperinci Bagaimana untuk Pivot Jadual MySQL: Mengubah Baris ke Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!