SQL ServerのIIF関数を使ったSELECT文の条件分岐する方法

SQLでカンマ区切りやcsvに使える IT技術情報

SQLのIIF関数は、指定した条件式がtrueかfalseかに基づいて、2つの値のうち一方を選択して返す便利な機能です。SQL Server 2012以降で利用可能になったこの関数は、if-else論理を簡潔にSQLクエリ内で表現することを可能にします。IIF関数の形式は以下のとおりです。

boolean_expressionは評価される条件式、true_valueは条件式が真の場合に返される値、false_valueは条件式が偽の場合に返される値を指します。この関数は、データの加工やカテゴリ分け、状態の表示など、さまざまな場面でその便利さを発揮します。

具体的な使用例

1: 顧客のカテゴリ分け

顧客データベースに記録された年間購入額に基づき、顧客を「プレミアム」「スタンダード」「エントリー」のカテゴリに分類します。

Customersテーブル

CustomerIDAnnualSpend
115000
28000
33000

出力結果

CustomerIDAnnualSpendCustomerCategory
115000プレミアム
28000スタンダード
33000エントリー

IIF関数を使用して、年間購入額に基づいて顧客を「プレミアム」「スタンダード」「エントリー」の3つのカテゴリに自動的に分類します。このクエリでは、最初のIIF関数が年間購入額が10,000を超えるかどうかを判定し、「プレミアム」とラベル付けします。条件がfalseの場合、IIF関数が購入額が5,000を超えるかどうかを判定し、「スタンダード」または「エントリー」のカテゴリを割り当てます。

2: 商品区分の名称変換

商品テーブルには、商品区分が数値で記録されています。これらの区分をわかりやすい名称に変換したいと考えています。例えば、区分「1」は「在庫品」、「2」は「取り寄せ品」、「3」は「メーカー直送」に対応してます。

Productsテーブル

ProductIDProductNameCategory
1商品A1
2商品B2
3商品C3

出力結果

ProductIDProductNameCategoryName
1商品A在庫品
2商品B取り寄せ品
3商品Cメーカー直送

IIF関数を使用して商品区分の数値を「在庫品」「取り寄せ品」「メーカー直送」といったわかりやすい名称に変換します。最初のIIF関数が商品区分が「1」であるかどうかを判定し、「在庫品」としています。条件がfalseの場合、IIF関数がさらに判定を行い、「2」であれば「取り寄せ品」、「それ以外」であれば「メーカー直送」という名称を割り当てます。この方法により、SELECT文を使用してデータを取得する際に、直接的な商品区分の名称を表示できるようになります。

まとめ

IIF関数を使用することで、SQLクエリにおける条件分岐を簡潔かつ効果的に実装でき、データの加工や分析作業をより直感的に行うことが可能になります。この関数を利用することで、データベース操作の効率性を高め、データの可読性や分析の精度を向上させることができます。

その他の具体例は

  • 在庫状況の表示:
    • 商品の在庫数に基づいて、「在庫あり」「在庫わずか」「在庫なし」などのラベルを動的に表示。
  • 顧客フィードバックの評価:
    • 顧客からのフィードバック評価(1から5のスコア)を基に、「良い」「普通」「悪い」などの評価カテゴリに分ける。
  • 販売目標の達成状況の判定:
    • 営業担当者ごとの販売実績を販売目標と比較し、「目標達成」「目標未達」などのステータスを割り当て。
  • 期限切れ商品の識別:
    • 現在日付と商品の賞味期限を比較し、「期限内」「期限切れ」のフラグを設定。
  • 優先顧客の特定:
    • 顧客の過去の購入履歴や活動を基に、「優先顧客」「一般顧客」などのステータスを割り当て。
  • 予算超過プロジェクトの識別:
    • プロジェクトの予算と実績の支出を比較し、「予算内」「予算超過」のラベルを付ける。
  • 顧客の年齢層に基づいたマーケティングメッセージのカスタマイズ:
    • 顧客の年齢に応じて、「若年層向け」「中年層向け」「高齢層向け」などのマーケティングメッセージを選択。



おすすめ情報

ある程度SQLに慣れてくるとより複雑なSQLを組むようになり、分析関数(ウインドウ関数)の壁にぶち当たります。本書は私が初級から抜け出すのになったきっかけの本です。比較的新しい関数なので古いSQLの本には載ってません。昔ながらのSQLを書く人はウインドウ関数の理解に苦しむケースが多いと思います。一歩先に進むためにも苦手意識を克服したいですね。

著:ミック
¥2,750 (2024/06/28 18:16時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場
【DMM FX】入金

コメント

タイトルとURLをコピーしました