- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:case when elseとグループ関数の併用について)
case when elseとグループ関数の併用について
このQ&Aのポイント
- Oracle9iのSQLPlusにて、table_Aテーブルの「AAA」に登録されている値ごとにカウントをとりたいだけなのですが、未入力分のカウントも必要になります。
- GROUPING SETS関数を使用して合計行にも未入力を表示するためには、CASE文を使用して条件分岐を行う必要があります。
- どなたかご教授いただけませんでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
本当なら「case when AAA IS NULL then '未入力' else AAA end」がグルーピングのキーであるはずが、GROUPING SETSに指定されているのはAAAですから、「結果がNULLなら'未入力'と表示する」が結果全体に掛ってしまっているのが理由です。 select case when AAA IS NULL then '未入力' else AAA end, count(distinct BBB) from table_A group by GROUPING SETS((case when AAA IS NULL then '未入力' else AAA end),()) とすれば、目的の結果が返ります。 ただ、今回の例ならNVLを使った方が見やすいです。 select NVL(AAA,'未入力'), count(distinct BBB) from table_A group by GROUPING SETS((NVL(AAA,'未入力')),())
お礼
うまくいけました。どうもありがとうございました。 またよろしくお願いします。