將表格重塑為列格式
挑戰: 以透視表格式檢索 MySQL 表中的數據,將行轉換為列。
問題:
給定一個包含 hostid、itemname 和 itemvalue 欄位的表,請如下所示顯示結果:
hostid | A | B | C |
---|---|---|---|
1 | 10 | 3 | 0 |
2 | 9 | 0 | 40 |
解:
步驟 1:選擇感興趣的欄位
決定將提供 y 值 (hostid) 和 x 值 (itemname) 的欄位。
步驟 2:擴充基礎表
為每個唯一的 x 值建立額外的欄位。
<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>
步驟 3:分組與聚合
按 y 值 (hostid) 分組並聚合擴展表。
<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>
步驟 4:美化(可選)
將 NULL 值替換為零,以獲得更清晰的外觀。
<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>
注意事項與限制:
以上是如何透視 MySQL 表:將行轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!