Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengubah Data Format Panjang ke Format Luas dalam SQLite Menggunakan JOINs atau Penyata KES?

Bagaimana untuk Mengubah Data Format Panjang ke Format Luas dalam SQLite Menggunakan JOINs atau Penyata KES?

DDD
DDDasal
2025-01-10 12:41:46280semak imbas

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

SQLite Pivot: Tukar format panjang kepada format lebar

Dalam SQLite, pivoting merujuk kepada menukar jadual yang disimpan dalam format panjang kepada format yang luas untuk analisis dan pemprosesan data yang lebih mudah. Ini amat berguna apabila bekerja dengan data yang mempunyai berbilang ukuran atau atribut setiap baris, kerana ia membolehkan kami memvisualisasikan data dalam cara yang lebih berstruktur dan boleh dibaca.

Untuk memutar data dalam SQLite, anda boleh menggunakan operasi JOIN digabungkan dengan ungkapan bersyarat atau gunakan pernyataan CASE dengan GROUP BY. Berikut ialah panduan terperinci untuk melengkapkan fluoroskopi menggunakan kedua-dua teknik:

Gunakan JOIN dan ungkapan bersyarat

Kaedah ini melibatkan penggunaan JOIN dan ungkapan bersyarat dengan fungsi SUM() untuk meringkaskan data bagi setiap lajur yang dikehendaki.

<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>

Gunakan pernyataan KES dan KUMPULAN OLEH

Pendekatan lain ialah menggunakan pernyataan KES dalam klausa GROUP BY. Teknik ini mengumpulkan baris mengikut lajur yang diperlukan dan mengira nilai agregat berdasarkan senario yang berbeza.

<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>

Kedua-dua kaedah boleh digunakan untuk memutar data dalam SQLite untuk memberikan anda format luas yang anda perlukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Data Format Panjang ke Format Luas dalam SQLite Menggunakan JOINs atau Penyata KES?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn