• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:case when elseとグループ関数の併用について)

case when elseとグループ関数の併用について

このQ&Aのポイント
  • Oracle9iのSQLPlusにて、table_Aテーブルの「AAA」に登録されている値ごとにカウントをとりたいだけなのですが、未入力分のカウントも必要になります。
  • GROUPING SETS関数を使用して合計行にも未入力を表示するためには、CASE文を使用して条件分岐を行う必要があります。
  • どなたかご教授いただけませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.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,'未入力')),())

ryozyryozy
質問者

お礼

うまくいけました。どうもありがとうございました。 またよろしくお願いします。

関連するQ&A