Tukar data jadual daripada format panjang kepada lebar menggunakan SQLite
Dalam analisis data, selalunya perlu untuk menukar data daripada format panjang (setiap baris mewakili satu rekod dan berbilang lajur mewakili nilai berbeza) kepada format lebar (setiap rekod menduduki berbilang lajur). Operasi ini dipanggil pivoting.
Kami mempunyai jadual yang dipanggil markdetails
dengan struktur berikut:
studid
subjectid
marks
A1 3 50
A1 4 60
A1 5 70
B1 3 60
B1 4 80
C1 5 95
Terdapat juga jadual bernama student_info
dengan struktur berikut:
studid
name
<code> A1 Raam B1 Vivek c1 Alex</code>
Kami mahu memutar data ini ke dalam format lebar berikut:
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>
Satu cara untuk melakukan ini ialah menggunakan pernyataan CASE
dengan GROUP BY
. Pertanyaan berikut akan mengembalikan format lebar yang diperlukan:
<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>
Atas ialah kandungan terperinci Bagaimana untuk Pivot Panjang ke Data Format Lebar dalam SQLite Menggunakan CASE dan GROUP BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!