MySQL 行轉列轉換詳解
在MySQL中,將表中的行轉換為列,需要分步驟進行。
步驟一:確定 X 和 Y 值
首先,確定構成透視表 X 值(列標題)和 Y 值(行)的列。在本例中,hostid 將作為 Y 值,itemname 將作為 X 值。
步驟二:添加額外列
為每個 X 值添加一個新列,包含相應的值。例如,對於 X 值 A、B 和 C,使用 CASE 語句添加列 A、B 和 C,如下所示:
<code class="language-sql">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>
步驟三:分組和聚合
按 Y 值列(本例中為 hostid)對擴展表進行分組,並使用聚合函數(例如 SUM)對新列進行聚合。
<code class="language-sql">SELECT hostid, SUM(A) AS A, SUM(B) AS B, SUM(C) AS C FROM history_extended GROUP BY hostid;</code>
步驟四:美化(可選)
如果需要,可以使用中性值(例如 0)替換任何 NULL 值,使表更易讀:
<code class="language-sql">SELECT hostid, COALESCE(A, 0) AS A, COALESCE(B, 0) AS B, COALESCE(C, 0) AS C FROM history_itemvalue_pivot;</code>
其他注意事項
以上是MySQL中如何有效率地將行轉換為列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!