2013-10-16 139 views
0

有人可以幫我處理下面的sql查詢。Sql server CASE和IN where子句

當您想按階段I過濾時,應該返回階段I或階段I/II的結果,但不返回階段II或階段III。

同樣,對於第二階段,它應該返回與結果相I/II,II期或II/III期

select Phase from Phases where Phase in (case 

when @phase='Phase I' then '''Phase I'',''Phase I/II''' 
when @phase='Phase II' then '''Phase I/II'',''Phase II'',''Phase II/III''' 
end) 

我不想使用動態查詢來解決這一問題。

+0

你到底想達到什麼目的?發佈一些日期和你想要的回報查詢。 –

+0

當你想按階段I過濾時,它應該尋找階段I或階段I/II,但不要階段II或階段III。同樣,對於第二階段,它應該返回第一階段/第二階段,第二階段或第二階段/第三階段的結果 – WorkInProgress

回答

3

布爾邏輯可以解決這個問題:

select Phase 
    from Phases 
where (@phase = 'Phase I' and Phase in ('Phase I', 'Phase I/II')) 
    or (@phase = 'Phase II' and Phase in ('Phase I/II', 'Phase II', 'Phase II/III'))