1. 程式人生 > >sql中的where後面使用case when

sql中的where後面使用case when

有這樣一段sql文。
select B.bCol_1,B.bCol_2,C.cCol_1
from TBL_B B left join TBL_C C
on B.bCol_Key = C.cCol_Key
where B.bCol_Time < 'xxxx'

現在需要擴充套件功能,就是隻有當表B.bCol_Flag=0時,where的條件改為C.cCol_Time < 'xxxx',其他的情況保持不變。不知道where裡面能不能再用case when或者還有其他的,如果能用的話,怎麼個寫法。
因為這個是擴充套件功能,而且這段程式碼是在Procedure中的,所以不太能用引數和if…else控制來寫。

這樣就可以了
select B.bCol_1,B.bCol_2,C.cCol_1
  from TBL_B B left join TBL_C C
    on B.bCol_Key = C.cCol_Key
 where (B.bCol_Time < 'xxxx' and B.bCol_Flag<>0) or ( C.cCol_Time < 'xxxx' and B.bCol_Flag=0)