パソコン情報

【SqlServer】IF分じゃなくCASE文で条件分岐させるとビューが便利になる

いまだに、Accessから脱皮できない自分ですが、少しづつですが、SqlServerの方でも処理をさせるようにしています。

SqlServerの方で、ストアドを動かす前準備で、ビューを作成してSQLにてコードを書きますが、

ポイント

ビューでIF分が使えないので条件分岐させるのを躊躇(ためら)っておりましたが、CASE分を使えば簡単にできる

ことをしりました。

CASE文の基本使用

CASE
WHEN 条件1 THEN 条件1の結果
WHEN 条件2 THEN 条件2の結果
ELSE 条件1,2以外の結果
EN

というような使い方をするようです。

ココがダメ

何で、IF THEN に統一してくれないのでしょうか!?

ところで、ここまでの説明をしてくれている解説サイトはあるのですが、実際に、MSSMSなどでビューなどで使う時の方法がよくわからないのです。

列の部分に設置する訳ね

今回は、progressというフィールドの値が2の時は、numberフィールドの値を使って、それ以外の場合は0を使うという条件です。

上の図のように、列の部分に条件分岐のコードをいれて、グループ化というところで、SUMをつかって、合計を出すようにしています。

直接ストアドで使えれば・・・

 

本当は、ビューなどで前準備してデータを作らなくても、ダイレクトでストアドで更新させられるような感じで使えるような気がしますが、まだまだ自分のスキルが無いのと、あまりストアドで複雑にするとデバッグする時が大変そうなのでビューを活用しています。

現段階では、ビューで前データを準備して、ストアドで更新するって感じですね。ただ、今までは、ビューで分岐の方法も知らなかったので、Accessでなんとか処理を行っていましたが、これでSqlServer側で処理をさせられるようになりました。