首页 >数据库 >mysql教程 >如何在保留 SQL 中原始列名的同时逆透视数据?

如何在保留 SQL 中原始列名的同时逆透视数据?

Patricia Arquette
Patricia Arquette原创
2025-01-21 04:51:08650浏览

How Can I Unpivot Data While Keeping Original Column Names in SQL?

保持原始列名进行数据解卷积

数据解卷积(Unpivoting)是一种将表格数据转换为另一种格式的过程,其中每个列都成为一行,其列名成为该行的属性。虽然这通常用于重塑数据以进行分析或可视化,但在某些情况下,保留原始列名可能很有用。

问题:

给定一个数据表,其列名例如NameMathsScienceEnglish,我们如何解卷积数据以获得如下结果集?

Name Subject Marks
Tilak Maths 90
Tilak Science 40
Tilak English 60

解决方案:

使用SQL的UNPIVOT子句,我们可以解卷积数据,同时保留列名:

<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列转换为行,分数成为解卷积结果集中的“marks”列。同时,列名保留在“subject”列中。

示例:

考虑以下数据集:

Name Maths Science English
Tilak 90 40 60
Raj 30 20 10

将提供的查询应用于此数据集,将产生所需的结果:

Name Subject Marks
Tilak Maths 90
Tilak Science 40
Tilak English 60
Raj Maths 30
Raj Science 20
Raj English 10

当保留原始列名对于进一步分析或数据处理很重要时,此技术非常有用。

以上是如何在保留 SQL 中原始列名的同时逆透视数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

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