首页 > 数据库 > mysql教程 > 如何使用数据透视查询在 SQL 中将行转置为列?

如何使用数据透视查询在 SQL 中将行转置为列?

Barbara Streisand
发布: 2025-01-03 04:25:42
原创
822 人浏览过

How Can I Transpose Rows into Columns in SQL Using a Pivot Query?

SQL 将行转置为列:透视解决方案

在 SQL 中,将行转置为列是重塑表格数据的有用技术。给定一个表,其中行代表数据点,列代表变量,您可能会遇到需要切换数据方向的场景。

其中一个场景,如问题中所述,涉及包含答案和问题的表格。目标是将响应数据转置为柱状格式,其中每个问题变成一列,每个用户对该问题的响应显示在相应的行中。

要实现这种转置,您可以利用已知的技术作为“枢轴查询”。以下 SQL 语句演示了使用 PostgresSQL 的解决方案:

SELECT r.user_id,
       MAX(CASE WHEN r.question_id = 1 THEN r.body ELSE NULL END) AS "Do you like apples?",
       MAX(CASE WHEN r.question_id = 2 THEN r.body ELSE NULL END) AS "Do you like oranges?",
       MAX(CASE WHEN r.question_id = 3 THEN r.body ELSE NULL END) AS "Do you like carrots?"
FROM RESPONSES r
JOIN QUESTIONS q ON q.id = r.question_id
GROUP BY r.user_id
登录后复制

此查询使用条件聚合根据问题 ID 对响应值进行分组和聚合。 CASE 语句提取每个问题的答案并将其分配到特定列。 MAX() 函数用于确保仅包含每个问题-用户对的最新响应。

此查询的输出将类似于所需的转置格式,其中每个用户的 ID 列在第一个中列,后跟每个问题的一列,其中包含用户的响应(如果不存在响应,则为 NULL)。

此数据透视查询是在 SQL 中将行转置为列的标准方法。它提供了一个高效、灵活的解决方案,用于动态处理任意数量的问题和响应组合。

以上是如何使用数据透视查询在 SQL 中将行转置为列?的详细内容。更多信息请关注PHP中文网其他相关文章!

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