条件WHERE子句

时间:2012-10-24 01:59:21

标签: sql-server-2008 stored-procedures where-clause

问题很简单 - 我相信答案也可能很简单。

系统是SQL Server 2008 R2。

存储过程sp_WHYWHYWHY需要3个参数 - 2个是日期,1个是供应商代码。

语句中的WHERE子句如下所示:

OrderDate BETWEEN @StartDate AND @EndDate
AND SupplierCode = @SupplierCode

业务流程已经发生了变化 - 一如既往。所以现在在供应商代码中只有一个供应商(比如说YY)现在已经与其他供应商保持一致(比如ABC)。

因此,代码需要在查询ABC时说明 - 包括YY

这样的东西
OrderDate BETWEEN @StartDate AND @EndDate
AND SupplierCode = CASE WHEN @SupplierCode = 'ABC' THEN 'YY','ABC' ELSE @SupplierCode END

我知道你不能这样写 - 但这就是最终结果应该是什么。

我怎么能这样做,真的吗?

感谢您花时间阅读&答案。

1 个答案:

答案 0 :(得分:2)

不要过度思考它!您希望供应商代码与提供的值匹配,提供的值为ABC,存储的供应商代码为YY

试试这个

AND ([SupplierCode] = @SupplierCode
OR ([SupplierCode] <> @SupplierCode 
    AND @SupplierCode ='ABC' 
    AND [SupplierCode] = 'YY'))