【SQLite3】SQLで条件分岐!列の値を評価して結果を返す(CASE)

PCで仕事をしている人

以前、Pythonで条件分岐をするための記事を投稿しました。

データベースの操作でも、SQLを発行することで条件分岐を行うことができます。

例えば、【項目Aの値が項目Bよりも大きかったらフラグを立てたい】など、使い方は様々です。

本日は、CASEの基本的な記述方法をご紹介したいと思います。

記事要約
  1. CASEの基本構文
  2. サンプルと実行結果

【Python】条件式の書き方と、利用方法・データを扱うときのあれこれ(if文)

2022年10月10日

目次

条件分岐の基礎:CASEの書き方

基本的な書き方

以下のように記述します。

まずは、SELECT文で確認していきたいと思います。

SELECT 項目1,項目2,
  CASE
      WHEN 条件1 THEN 条件1を満たしたら実行される処理
      ELSE 条件を満たしていないに実行される処理
  END
FROM テーブル名称;

条件によって、任意の値に変換する

CASEは、列の値を条件式によって評価して、結果に応じて別の値に変換をすることができます。

まずはサンプルで、以下の条件で実行してみたいと思います。

実現したいこと
  1. WINDOWテーブルを利用する
  2. trading_dateの日付によって、何月かを判定し、結果を出力する

サンプルコード

SELECT trading_date,closing_price,
    CASE
        WHEN trading_date < 20220201 THEN '1月'
        WHEN trading_date >= 20220301 THEN '3月'
        WHEN trading_date < 20220301 THEN '2月'
    END AS Month
FROM WINDOW;

実行結果

結果が長くて、すみません、、、

無事に、取引日から、対象のレコードが「何月」か?という列を追加することができました。