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中文网其他相关文章!