View a markdown version of this page

CASE 条件式 - Amazon Redshift

Amazon Redshift は、2026 年 6 月 30 日以降、Python UDF の使用をサポートしなくなります。これは段階的に実施されます。Python のサポート終了と移行オプションの詳細については、2025 年 6 月 30 日に公開されたブログ記事を参照してください。

CASE 条件式

CASE 式は条件式であり、他の言語で使われる if/then/else ステートメントと似ています。CASE は、複数の条件がある場合に結果を指定するために使用されます。SELECT コマンドでなど、SQL 式が有効な場合に CASE を使用してください。

2 種類の CASE 式 (簡易および検索) があります。

  • 簡易 CASE 式では、式は値と比較されます。一致が検出された場合、THEN 句で指定されたアクションが適用されます。一致が検出されない場合、ELSE 句のアクションが適用されます。

  • 検索 CASE 式では、CASE ごとにブール式に基づいて検証され、CASE ステートメントは最初を一致する CASE を返します。WHEN 句で検出されない場合、ELSE 句のアクションが返されます。

構文

条件を満たすために使用される簡易 CASE ステートメント

CASE expression WHEN value THEN result [WHEN...] [ELSE result] END

各条件を検証するために使用する検索 CASE ステートメント

CASE WHEN condition THEN result [WHEN ...] [ELSE result] END

引数

expression

列名または有効な式。

値

数値定数または文字列などの式を比較する値。

result

式またはブール条件が検証されるときに返されるターゲット値または式。すべての結果式のデータタイプは、単一の出力タイプに変換できる必要があります。

condition

true または false に評価される Boolean 式。条件が true の場合、CASE 式の値は条件に続く結果であり、残りの CASE 式は処理されません。条件が false の場合、後続の WHEN 句はすべて評価されます。WHEN 条件の結果がどれも true ではない場合、CASE 式の値が ELSE 句の結果になります。ELSE 句が省略され、どの条件も true ではない場合、結果は Null となります。

例

次の例では、サンプル TICKIT データの VENUE テーブルと SALES テーブルを使用しています。詳細については、「サンプルデータベース」を参照してください。

簡易 CASE 式を使用し、VENUE テーブルに対するクエリで New York City を Big Apple に置換します。その他すべての都市名を other に置換します。

select venuecity, case venuecity when 'New York City' then 'Big Apple' else 'other' end from venue order by venueid desc; venuecity | case -----------------+----------- Los Angeles | other New York City | Big Apple San Francisco | other Baltimore | other ...

検索 CASE 式を使用し、それぞれのチケット販売の PRICEPAID 値に基づいてグループ番号を割り当てます。

select pricepaid, case when pricepaid <10000 then 'group 1' when pricepaid >10000 then 'group 2' else 'group 3' end from sales order by 1 desc; pricepaid | case ----------+--------- 12624 | group 2 10000 | group 3 10000 | group 3 9996 | group 1 9988 | group 1 ...