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

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

Patricia Arquette
Patricia Arquette原创
2025-01-21 04:46:08248浏览

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 查询来完成此操作:

<code class="language-sql">SELECT u.name, u.subject, u.marks
FROM student s
UNPIVOT
(
  marks
  FOR subject IN (Maths, Science, English)
) u;</code>

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

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

SQL 小提琴示例

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn