使用 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中文網其他相關文章!