我确信这应该是非常简单的事情,但我无法解决语法问题。
我有一个名为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
答案 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='')