2014-02-26 123 views
0

是否有可能有一個動態where子句,基於列的值?我可以使用case語句,但我需要返回多個值。僞代碼將低於SQL Server 2008動態Where子句

例如,

SELECT * FROM PRODUCTS 
CASE 
    WHEN Location = 'Vegas' 
    THEN 'WHERE FOO IN ('1','2','3')' 
ELSE 
    WHEN Location = 'Juneau' 
    THEN 'WHERE FOO IN ('4','5','6')' 
END 
AND BUZZ = '1' 
+0

什麼是你的表像和你想要的輸出是什麼樣子? – Steam

+0

領域:位置,美孚,嘶嘶聲,嗡嗡聲,價格。 例如,選擇所有價格:如果拉斯維加斯然後foo在哪裏(1,2,3),或者如果朱諾那麼foo在哪裏(4,5,6),否則什麼都不是 – rwolters3

+0

所以,你想獲得基於結果的關於Location和Foo的某些值。第一個答案顯示它。 – Steam

回答

1

使用布爾邏輯:

SELECT * FROM PRODUCTS 
where (
(Location = 'Vegas' and FOO IN ('1','2','3')) or 
(Location = 'Juneau' and FOO IN ('4','5','6')) 
) 
AND BUZZ = '1' 
+0

謝謝blorgbeard,這是有道理的。我會測試它以確保它能正常工作,如果我沒有任何其他問題,請將其標記爲答案 – rwolters3