首頁 >資料庫 >mysql教程 >SQL Unpivoting 如何將寬表格資料轉換為長格式?

SQL Unpivoting 如何將寬表格資料轉換為長格式?

Patricia Arquette
Patricia Arquette原創
2025-01-21 04:46:08193瀏覽

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