ホームページ >データベース >mysql チュートリアル >SQLite で JOIN または CASE ステートメントを使用してロング フォーマット データをワイド フォーマットにピボットする方法

SQLite で JOIN または CASE ステートメントを使用してロング フォーマット データをワイド フォーマットにピボットする方法

DDD
DDDオリジナル
2025-01-10 12:41:46278ブラウズ

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

SQLite Pivot: ロングフォーマットからワイドフォーマットへの変換

SQLite では、ピボットとは、データの分析と処理を容易にするために、ロング フォーマットで保存されたテーブルをワイド フォーマットに変換することを指します。これは、より構造化された読みやすい方法でデータを視覚化できるため、行ごとに複数の測定値または属性を持つデータを操作する場合に特に便利です。

SQLite でデータをピボットするには、JOIN 操作と条件式を組み合わせて使用​​するか、CASE ステートメントと GROUP BY を使用します。両方の技術を使用して透視検査を完了するための詳細なガイドは次のとおりです:

JOIN と条件式を使用する

この方法では、SUM() 関数で JOIN および条件式を使用して、目的の各列のデータを要約します。

<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 を使用する

もう 1 つの方法は、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。