我想要做的是基于where子句条件之间的条件切换..这是可能的吗?Where clause with switch case or dynamic where
这是一个例子,实际的过程更长,我不想使用,如果选择。
可能吗?
declare @city varchar(100) = 'NY'
SELECT s.suppliers, o.order
FROM suppliers s
INNER JOIN orders o ON s.id = o.id
WHERE
CASE WHEN @city = 'NY'
THEN (s.SupplierName = o.SupplierName AND o.Row = 'New')
ELSE s.SupplierName = o.SupplierName
END
CASE是一个带有一个输出的表达式,不能像IF条件那样使用它来控制流。 http://sqlperformance.com/2014/06/t-sql-queries/dirty-secrets-of-the-case-expression – 2015-04-01 18:56:16
@AaronBertrand如果你不能使用,那么会有什么替代? – NoviceDeveloper 2015-04-01 18:58:16
'WHERE s.SupplierName = o.SupplierName AND o.Row = CASE @city当'NY'那么'新的'ELSE o.Row END'。如果o.Row可以为空,则更复杂一点。 – 2015-04-01 18:59:38