首页 >数据库 >mysql教程 >如何在 SQL 中逆透视数据并包含列名称作为新列?

如何在 SQL 中逆透视数据并包含列名称作为新列?

Susan Sarandon
Susan Sarandon原创
2025-01-21 04:37:07844浏览

How to Unpivot Data and Include Column Names as a New Column in SQL?

在 SQL 中将宽数据转换为长格式

假设您有一个名为 StudentMarks 的表,其中包含 NameMathsScienceEnglish 列。 目标是将这种宽格式数据转换为长格式,其中主题名称成为一个新列。目标输出应类似于:

<code>Name  Subject  Marks
Tilak Maths    90
Tilak Science  40
Tilak English  60</code>

使用 UNPIVOT 运算符的常见方法最初可能看起来很难将列名称包含为新列。 然而,解决方案很简单:

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

此 SQL 查询使用 UNPIVOT 重构 StudentMarks 表(别名为“s”)。 FOR 中的 UNPIVOT 子句指定要取消透视的列(MathsScienceEnglish),这些列名称会自动填充结果数据集中的新 Subject 列。 marks 值分配给未透视表中的 marks 列。此修改后的查询有效地生成所需的长格式名称、主题和标记列。

以上是如何在 SQL 中逆透视数据并包含列名称作为新列?的详细内容。更多信息请关注PHP中文网其他相关文章!

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