-1

SWITCH複雑なステートメントを書きたいSQL (SQL Server 2008 R2)

WHERE目標は、ステートメントに次のようなものを書くことです。

  • の場合myParam = 0、 (0 は「未定義」を意味するため、ステートメントmyColumn = myColumnを「無視」します)WHERE
  • なら0 < myParam < 6myColumn = myParam
  • ならmyParam >= 6myColumn = [6 ; Infinity]

だから私は書いた:

WHERE 
  h.MyColumn = CASE @MyParam
                 WHEN 0 THEN h.MyColumn
                 WHEN @MyParam > 0 AND @MyParam < 6 THEN @MyParam
                 WHEN @MyParam > 6 THEN /* ??? */

まず、私は順調ですか?もしそうなら、どうすれば3番目を書くことができWHENますか? @MyParamは 0、1、2、3、4、5、または 6 にのみ等しくなり、最後のケースでは、データを選択する必要がありますh.MyColumn > 6

どんな助けでも感謝します!ありがとうございました

4

3 に答える 3

2

これをもっと簡単に表現できると思います:

WHERE @MyParam = 0 
OR (@MyParam BETWEEN 1 AND 5 AND h.MyColumn = @MyParam)
OR (@MyParam = 6 AND h.MyColumn > 6)
于 2013-08-14T21:13:00.347 に答える
0

私のおすすめ:

if (@myParam = 0)
Begin
    select * from table
    Where h.MyColumn = 0
End
Else if (@myParam between 1 and 5)
Begin
    select * from table
    Where (h.MyColumn between 1 and 5)
End
Else
Begin
    select * from table
    Where (h.MyColumn > 5)
End
于 2013-08-14T21:21:25.997 に答える