我想要做的是基於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