CASE 条件式 - Amazon Redshift

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

列名または有効な式。

value

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

result

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

condition

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

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

簡易 CASE 式を使用し、VENUE テーブルに対するクエリで New York CityBig 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 ...