我有MS SQL 2008中的表,其中有一列名爲Status
。它可以具有「A」或「I」或「P」作爲值。我有一個以@Status
作爲參數的存儲過程。如果參數是null
,我需要檢索狀態爲A或I或P(基本上忽略狀態字段)的所有記錄。如果參數只有A(例如),我只需要獲取具有A作爲狀態的記錄。如何在沒有IF.. ELSE
的單個SELECT語句中完成此操作?SQL查詢 - 獲取所有記錄基於標誌
-- This is just a snippet of a larger query.
-- Can the following be done without IF ELSE?
IF @Status = NULL
BEGIN
SELECT * FROM Person
END
ELSE SELECT * FROM Person WHERE Status = @Status
編輯:我的目標不是重複相同的邏輯兩次。 select語句有一堆連接和東西,我不想在else條件中再次重複它。
編輯#2:我的壞 - 我再次檢查表,它確實包含NULL
狀態的記錄,我不想要。這裏的表 -
Id Status
--------------
1 A
2 I
3 P
4 NULL
如果@Status
爲 「-1」(我將默認參數爲-1),我想1, 2, 3
記錄。我如何編寫查詢?
是否有任何機會,你以後會改變主意,並支持多種@Status值?例如,向我展示狀態爲A或I但不是P的所有行? – 2012-04-25 19:14:55
@AaronBertrand:沒有。它要麼有價值,要麼沒有。 – tempid 2012-04-25 19:15:46