ホームページ > データベース > mysql チュートリアル > CASE と GROUP BY を使用して SQLite でロング形式データからワイド形式データにピボットする方法

CASE と GROUP BY を使用して SQLite でロング形式データからワイド形式データにピボットする方法

Linda Hamilton
リリース: 2025-01-10 13:01:46
オリジナル
859 人が閲覧しました

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

SQLite を使用して表形式データをロング形式からワイド形式に変換します

データ分析では、多くの場合、データをロング形式 (各行が 1 つのレコードを表し、複数の列が異なる値を表す) からワイド形式 (各レコードが複数の列を占める) に変換する必要があります。この操作をピボットと呼びます。

次の構造を持つ 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>
    ログイン後にコピー

これを行う 1 つの方法は、CASE ステートメントを GROUP BY とともに使用することです。次のクエリは、必要なワイド形式を返します:

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;
ログイン後にコピー

以上がCASE と GROUP BY を使用して SQLite でロング形式データからワイド形式データにピボットする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート