2017-06-28 16 views
0

私は本当にここのレンガの壁に当たっています。私は誰かが正しい方向に私を向けることを望んでいます。私はこのようになりますSQLデータベースを持っている:SQL条件と計算を選択して

Course    Extension Max Extension 1 Extension 1 Used Extension 2 Extension 2 Used 
Excel Introduction  24    12   TRUE    12   FALSE 
Word Introduction   24    12   TRUE    12   TRUE 

したがって、上記のデータ、残り日数が12になる最初の行のように、私たちがきたように私が計算したいことは、残りの拡張日であると12日の1ブロックと12日のブロックが残ります。

両方の12日ブロックが使用されているため、2番目の列はゼロ/ 0の残りの日を示します。

両方の値がFALSEの場合は、拡張機能がまだ使用されていないため、列内のExtension Maxが日数で表示されます。

残りの日数を計算して表示するには、新しい列または変数を作成するにはどうすればよいですか?

いつものように、ありがとうございます、ありがとうございます。

+0

両方が「偽」の場合はどうなりますか? –

+0

こんにちはGordon、私はその答えに投稿を編集しました。ありがとうございました。 –

答えて

1

あなたはこのような何かしたいように見えるでしょう:、

select t.*, 
     ((case when Extension1Used = 'false' then Extension1 else 0 end) + 
     (case when Extension2Used = 'false' then Extension2 else 0 end) 
     ) as remaining_extension_days 
from t; 

をそれともでしフレーズこのよう:

select t.*, 
     (case when Extension1Used = 'false' and Extension2Used = 'false' 
      then ExtensionMax 
      when Extension1Used = 'false' 
      then Extension1 
      when Extension2Used = 'false' 
      then Extension2 
      else 0 
     end) as remaining_extension_days 
from t; 

最初の形式は単純であり、かつ最大延長の場合は動作するはずです個々の拡張の合計。

+0

ありがとうございましたゴードン、私は素早く見てきました、これは私が後にしているものだと思います。 –

関連する問題