根据变量选择语句

时间:2016-12-08 09:55:58

标签: sql tsql

我确信这应该是非常简单的事情,但我无法解决语法问题。

我有一个名为domain的变量,可以填充或不填充,当填充它时我想运行一个语句但是当它不是我想要运行另一个语句时。我会说这应该是一种非常简单的形式。

IF @Domain = '.co.uk'

select * from table where domain = @domain

else

select * from table

end

不确定这是否足以让某人开始使用。

谢谢P

认为发布我正在使用的确切代码可能更好,因为这可能会改变一些响应并使事情更容易解释。

下面显示的代码是我将要运行的代码,并且公平地说,基于变量的情况在连接上可能更容易,而不是2个select语句。

select affiliate_id
      ,campaign_id
      ,count(*) as leads
from [BDatabase]..affil a (nolock)
where cast(created_datetime as date) between @startdate and @enddate
    and (a.domain = @domain
        or isnull(@Domain,'') = ''
        )
group by affiliate_id
        ,campaign_id

2 个答案:

答案 0 :(得分:2)

SELECT * FROM tableName
WHERE domain = CASE WHEN ISNULL(@Domain,'') = '' THEN domain ELSE @Domain END

根据您编辑的已编辑查询,您可以使用上述解决方案

select affiliate_id
      ,campaign_id
      ,count(*) as leads
from [BDatabase]..affil a (nolock)
where cast(created_datetime as date) between @startdate and @enddate
    and a.domain = CASE WHEN ISNULL(@domain,'') = '' THEN a.domain ELSE @domain END              
group by affiliate_id
        ,campaign_id

答案 1 :(得分:0)

select * from table 
where (domain = @domain and @Domain = '.co.uk') 
or (@domain is null or @domain='')