首页 > 数据库 > mysql教程 > 如何创建 MySQL 交叉表查询以将数据从行转换为列?

如何创建 MySQL 交叉表查询以将数据从行转换为列?

Barbara Streisand
发布: 2025-01-06 10:42:42
原创
757 人浏览过

How to Create a MySQL Crosstab Query to Pivot Data from Rows to Columns?

MySQL 数据透视/交叉表查询:转换数据以增强显示

MySQL 中的交叉表或数据透视查询允许您将数据(通常从面向行的结构)转换为面向专栏的,有利于更轻松的分析和演示。要了解如何使用交叉表查询,让我们深入研究一个实际示例。

示例:将数据转换为面向列的格式

考虑具有以下结构的表:

app_id  transaction_id  mobile_no  node_id  customer_attribute  entered_value
100     111             9999999999  1        Q1                  2
100     111             9999999999  2        Q2                  1
100     111             9999999999  3        Q3                  4
100     111             9999999999  4        Q4                  3
100     111             9999999999  5        Q5                  2
100     222             8888888888  4        Q4                  1
100     222             8888888888  3        Q3                  2
100     222             8888888888  2        Q2                  1
100     222             8888888888  1        Q1                  3
100     222             8888888888  5        Q5                  4
登录后复制

您想要在下面显示这些记录格式:

app_id  transaction_id  mobile     Q1  Q2  Q3  Q4 | Q5
100    111             9999999999   2   1   4  3  2
100    222             8888888888   3   1   2  1  4
登录后复制

要实现此目的,您可以使用交叉表查询。但是,在最初的尝试中,您为每个数据点检索了多行,这不是所需的结果。

更正的交叉表查询

以下调整后的查询将提供所需的结果:

SELECT app_id, transaction_id, mobile_no,
  MAX(CASE WHEN node_id = 1 THEN entered_value END) AS Q1,
  MAX(CASE WHEN node_id = 2 THEN entered_value END) AS Q2,
  MAX(CASE WHEN node_id = 3 THEN entered_value END) AS Q3,
  MAX(CASE WHEN node_id = 4 THEN entered_value END) AS Q4,
  MAX(CASE WHEN node_id = 5 THEN entered_value END) AS Q5
FROM trn_user_log
GROUP BY app_id, transaction_id, mobile_no
登录后复制

使用客户属性作为列标题

您还表达了使用来自customer_attribute 列作为列标题。虽然 NAME_CONST 函数不适合此目的,但您可以利用可能实现所需结果的技术。但是,请进一步说明您想要的结果,以便获得精确的解决方案。

以上是如何创建 MySQL 交叉表查询以将数据从行转换为列?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板