首頁 >資料庫 >mysql教程 >如何在 SQL 中逆透視資料並包含列名稱作為新列?

如何在 SQL 中逆透視資料並包含列名稱作為新列?

Susan Sarandon
Susan Sarandon原創
2025-01-21 04:37:07893瀏覽

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