在 SQL 中将宽数据转换为长格式
假设您有一个名为 StudentMarks
的表,其中包含 Name
、Maths
、Science
和 English
列。 目标是将这种宽格式数据转换为长格式,其中主题名称成为一个新列。目标输出应类似于:
<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
子句指定要取消透视的列(Maths
、Science
、English
),这些列名称会自动填充结果数据集中的新 Subject
列。 marks
值分配给未透视表中的 marks
列。此修改后的查询有效地生成所需的长格式名称、主题和标记列。
以上是如何在 SQL 中逆透视数据并包含列名称作为新列?的详细内容。更多信息请关注PHP中文网其他相关文章!