在SQL SELECT语句中动态选择WHERE子句的版本?

时间:2015-10-27 17:02:31

标签: sql-server

基本上,我想在SQL SELECT语句中选择两个版本的WHERE子句中的一个,而不必复制整个SELECT语句的两个版本。

例如,我想指定一个像@topclients这样的变量, 并在@topclients ='true'时执行以下WHERE子句:

WHERE 
    CAST(event_dtm AS DATE) between @start and @end
    and client IN ('client1','client2', 'client3')

或@topclients ='false'时执行以下WHERE子句:

WHERE 
    CAST(event_dtm AS DATE) between @start and @end

我该怎么做?

1 个答案:

答案 0 :(得分:2)

只需使用:

WHERE 
    CAST(event_dtm AS DATE) between @start and @end
    and (
      client IN ('client1','client2', 'client3') 
      or @topclients = 'false'
    )