• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CASE式を使ったクエリ)

CASE式を使ったクエリで条件式が11レベル以上の場合の抽出方法はあるか

このQ&Aのポイント
  • SQLSERVER2005の環境で、テーブル「TBL」には「MONEY1」から「MONEY12」までのフィールドがあります。
  • MONEYの後ろの数字は月を表しており、条件としては、MONEY12から順に0円でない月まで遡り、その月の金額を求めたいというものです。
  • しかし、CASE式を使用して条件式を11レベル以上にすると、「Case 式は、10 レベルまでしか入れ子にできません。」というエラーが発生します。

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

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

試していないので自信ありませんが、 case when money12<>0 then 'MONEY12' when money11<>0 then 'MONEY11' when money10<>0 then 'MONEY10' when money9<>0 then 'MONEY9' when money8<>0 then 'MONEY8' when money7<>0 then 'MONEY7' when money6<>0 then 'MONEY6' when money5<>0 then 'MONEY5' when money4<>0 then 'MONEY4' when money3<>0 then 'MONEY3' when money2<>0 then 'MONEY2' else money1<>0 then 'MONEY1' end の要領で取得できませんか。

noname#208236
質問者

お礼

ありがとうございました。 できました。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

select coalesce( nullif(MONEY12,0), nullif(MONEY11,0), nullif(MONEY10,0), nullif(MONEY9,0), nullif(MONEY8,0), nullif(MONEY7,0), nullif(MONEY6,0), nullif(MONEY5,0), nullif(MONEY4,0), nullif(MONEY3,0), nullif(MONEY2,0), MONEY1 ) from じゃだめですかね。

noname#208236
質問者

お礼

できました。 COALESCE 関数を初めて知りました。 一つ便乗して質問してもよろしいでしょうか? このクエリで0円でない値までさかのぼって値を取得することはできたのですが、 取得した時のフィールド名を取得することはできるのでしょうか? よろしくお願いします。

関連するQ&A