🤞

iifと集計関数を組み合わせてselect結果を表示する

2024/01/22に公開

iif関数の構文

まず、iif関数の構文になります。

指定された条件に合致する場合は "Trueの戻り値" が表示され、そうでない場合は "Falseの戻り値" が表示されます。

構文
iif(判定条件, True時の戻り値, False時の戻り値)

参考資料:公式ドキュメント

サンプル

次に、iifを用いたサンプルクエリーをご紹介します。

たとえば、以下のデータを持つテーブルがあった場合、

商品テーブル(PRODUCT)

PRODUCT_NO PRODUCT_NAME
1 りんご
2
3 グレープフルーツ


それに対して下記のクエリーを実行すると、

商品判定クエリー
select
	PRODUCT.PRODUCT_NO as 商品番号,
	iif(PRODUCT_NAME = 'りんご', 'りんごだよ!', 'りんごじゃないよ!') as 判定
from
	PRODUCT


表示結果はこのようになり、表示結果を分岐させることができます。

商品番号 判定
1 りんごだよ!
2 りんごじゃないよ!
3 りんごじゃないよ!

集計関数との組み合わせ

最後に、iifと集計関数を組み合わせて、select結果を表示する方法をご紹介します。

以下のデータを持つテーブルがあった場合に、

商品テーブル(PRODUCT)

PRODUCT_NO PRODUCT_NAME
1 りんご
2
3 グレープフルーツ

売上テーブル(SALES)

SALES_NO PRODUCT_NO SALES_VOLUME
1 1 5
2 1 3
3 2 1


このようなクエリーを実行することで、

売上集計クエリー
select
	PRODUCT.PRODUCT_NO as 商品番号,
	PRODUCT_NAME as 商品名,
	iif(sum(SALES_VOLUME) is null, 0, sum(SALES_VOLUME)) as 売上数合計
from
	PRODUCT
	left outer join SALES
		on PRODUCT.PRODUCT_NO = SALES.PRODUCT_NO
group by
	PRODUCT.PRODUCT_NO,
	PRODUCT.PRODUCT_NAME
order by
	PRODUCT.PRODUCT_NO


商品ごとの売上数量を集計し、売り上げがなかったものも含めて表示させることができます。

実行結果

商品番号 商品名 売上数合計
1 りんご 8
2 1
3 グレープフルーツ 0

Discussion