SQL服务器如果在哪里函数开始语句
问题描述:
我试图在where语句中创建以下内容。SQL服务器如果在哪里函数开始语句
where Registration_Date >[email protected] and Registration_Date < dateadd(day,1,@EndDate)
and if @affiliateid is null begin Channel in (select Value from dbo.Split(',',@Channel)) end
else Affiliate_Id in (select Value from dbo.Split(',', @AffiliateId))
and Registration_Channel in (select Value from dbo.Split(',', @Channel))
所以,我想说的是,如果@AffiliateId为空,则使用@Channel输入所有加盟的ID,如果没有则使用特定的@AffiliateId,不论通道。
有什么办法可以让这项工作?
答
SELECT *
FROM mytable
WHERE DATE(registration_date) BETWEEN @startDate AND @endDate
AND EXISTS
(
SELECT NULL
FROM dbo.split(',', COALESCE(@affiliateId, @channel))
WHERE value = CASE WHEN @affiliateId IS NULL THEN channel ELSE affiliateId END
)
AND EXISTS
(
SELECT NULL
FROM dbo.split(',', @channel)
WHERE value = registration_channel
)
在SQL Server 2008
,DATE(column)
是可优化搜索表达。
这个工程很漂亮! – angeliki 2013-04-25 11:19:58