首页 > 数据库 > mysql教程 > SQL Unpivoting 如何将宽表格数据转换为长格式?

SQL Unpivoting 如何将宽表格数据转换为长格式?

Patricia Arquette
发布: 2025-01-21 04:46:08
原创
280 人浏览过

How Can SQL Unpivoting Transform Wide Tabular Data into a Long Format?

逆透视:重组关系数据

想象一个表 StudentMarks,存储学生姓名 (Name) 及其各个科目的分数 (MathsScienceEnglish)。 数据最初是这样组织的:

<code>Name, Maths, Science, English
Tilak, 90, 40, 60
Raj, 30, 20, 10</code>
登录后复制

但是,如果我们需要不同的结构(每个科目的分数出现在新行中)怎么办? 期望的结果如下所示:

<code>Name, Subject, Marks
Tilak, Maths, 90
Tilak, Science, 40
Tilak, English, 60
Raj, Maths, 30
Raj, Science, 20
Raj, English, 10</code>
登录后复制

这就是 SQL 逆透视的用武之地。它是一种将宽表(多列)转换为长表(多行)的强大技术。

以下是如何使用 SQL 查询来完成此操作:

SELECT u.name, u.subject, u.marks
FROM student s
UNPIVOT
(
  marks
  FOR subject IN (Maths, Science, English)
) u;
登录后复制

此查询使用 UNPIVOT 运算符。 它采用 MathsScienceEnglish 列,并将它们转换为单个 Subject 列,并在 Marks 列中提供相应的分数。 结果是所需的长格式。

有关现场演示,请查看此 SQL Fiddle:

SQL 小提琴示例

以上是SQL Unpivoting 如何将宽表格数据转换为长格式?的详细内容。更多信息请关注PHP中文网其他相关文章!

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