将表格重塑为列格式
挑战: 以透视表格式检索 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中文网其他相关文章!