逆透視:重組關係資料
想像一個表格 StudentMarks
,儲存學生姓名 (Name
) 及其各科目的分數 (Maths
、Science
、English
)。 數據最初是這樣組織的:
<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
運算子。 它採用 Maths
、Science
和 English
列,並將它們轉換為單一 Subject
列,並在 Marks
列中提供相應的分數。 結果是所需的長格式。
有關現場演示,請查看此 SQL Fiddle:
以上是SQL Unpivoting 如何將寬表格資料轉換為長格式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!