首頁 > 資料庫 > mysql教程 > 如何使用 CASE 和 GROUP BY 在 SQLite 中將長格式資料轉換為寬格式資料?

如何使用 CASE 和 GROUP BY 在 SQLite 中將長格式資料轉換為寬格式資料?

Linda Hamilton
發布: 2025-01-10 13:01:46
原創
847 人瀏覽過

How to Pivot Long to Wide Format Data in SQLite Using CASE and GROUP BY?

使用 SQLite 將表格資料​​從長格式轉換為寬格式

在資料分析中,經常需要將資料從長格式(每行代表一筆記錄,多列代表不同的值)轉換為寬格式(每筆記錄佔據多列)。此操作稱為資料透視。

我們有一個名為 markdetails 的表,結構如下:

  • studid subjectid marks

    A1 3 50
    A1 4 60
    A1 5 70
    B1 3 60
    B1 4 80
    C1 5 95

還有一個名為 student_info 的表,結構如下:

  • studid name

    <code>  A1          Raam
      B1          Vivek
      c1          Alex</code>
    登入後複製

我們希望將此資料透視成以下寬格式:

  • studid name subjectid_3 subjectid_4 subjectid_5

    <code>  A1        Raam        50                60                 70
      B1        Vivek       60                80                NULL
      c1        Alex       NULL              NULL                95</code>
    登入後複製

一種實作方法是使用 CASE 語句和 GROUP BY。以下查詢將傳回所需的寬格式:

<code class="language-sql">SELECT
    si.studid,
    si.name,
    SUM(CASE WHEN md.subjectid = 3 THEN md.marks END) AS subjectid_3,
    SUM(CASE WHEN md.subjectid = 4 THEN md.marks END) AS subjectid_4,
    SUM(CASE WHEN md.subjectid = 5 THEN md.marks END) AS subjectid_5
FROM student_info si
JOIN markdetails md ON
    md.studid = si.studid
GROUP BY si.studid, si.name;</code>
登入後複製

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板