首頁 >資料庫 >mysql教程 >如何在 SQLite 中使用 JOIN 或 CASE 語句將長格式資料轉換為寬格式資料?

如何在 SQLite 中使用 JOIN 或 CASE 語句將長格式資料轉換為寬格式資料?

DDD
DDD原創
2025-01-10 12:41:46280瀏覽

How to Pivot Long Format Data to Wide Format in SQLite Using JOINs or CASE Statements?

SQLite 資料透視:將長格式轉換為寬格式

在 SQLite 中,資料透視是指將長格式儲存的表轉換為寬格式,以便更輕鬆地進行資料分析和處理。當處理每行具有多個測量值或屬性的資料時,這尤其有用,因為它使我們能夠以更結構化和可讀的方式視覺化資料。

要透視 SQLite 中的數據,您可以使用 JOIN 操作結合條件表達式,或使用帶有 GROUP BY 的 CASE 語句。以下是使用這兩種技術完成透視的詳細指南:

使用 JOIN 和條件式

此方法涉及使用 JOIN 和條件表達式以及 SUM() 函數來匯總每個所需列的資料。

<code class="language-sql">select
    u.stuid,
    u.name,
    s3.marks as subjectid_3,
    s4.marks as subjectid_4,
    s5.marks as subjectid_5
from
    student_info u
    left outer join markdetails s3 on
        u.stuid = s3.stuid
        and s3.subjectid = 3
    left outer join markdetails s4 on
        u.stuid = s4.stuid
        and s4.subjectid = 4
    left outer join markdetails s5 on
        u.stuid = s5.stuid
        and s5.subjectid = 5;</code>

使用 CASE 語句和 GROUP BY

另一個方法是在 GROUP BY 子句中使用 CASE 語句。此技術按必要的列對行進行分組,並根據不同的情況計​​算聚合值。

<code class="language-sql">select
    si.studid,
    si.name,
    sum(case when md.subjectid = 3 then md.marks end) subjectid_3,
    sum(case when md.subjectid = 4 then md.marks end) subjectid_4,
    sum(case when md.subjectid = 5 then md.marks end) subjectid_5
from
    student_info si
join
    markdetails md on
        md.studid = si.studid
group by
    si.studid,
    si.name;</code>

這兩種方法都可以用於透視 SQLite 中的數據,為您提供所需的寬格式。

以上是如何在 SQLite 中使用 JOIN 或 CASE 語句將長格式資料轉換為寬格式資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn