Buat semula borang ke dalam format lajur
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.
<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>
Gantikan nilai null ke sifar untuk mendapatkan penampilan yang lebih jelas.
Langkah berjaga -jaga dan sekatan
<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>
Nilai yang digunakan dalam lajur lanjutan dan nilai lalai nilai yang hilang boleh disesuaikan.
anda boleh menyesuaikan fungsi pempolimeran (contohnya, max).
<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>
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!