という列を持つMS SQL 2008のテーブルがありますStatus
。値として "A" または "I" または "P" を持つことができます。パラメータとして受け取るストアドプロシージャがあり@Status
ます。パラメータが の場合null
、ステータスが A または I または P のいずれかであるすべてのレコードを取得する必要があります (基本的に [ステータス] フィールドは無視します)。パラメータが A のみの場合 (たとえば)、ステータスが A のレコードのみを取得する必要があります。なしで単一の SELECT ステートメントでこれを行うにはどうすればよいIF.. ELSE
ですか?
-- 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
編集: 私の目標は、同じロジックを 2 回複製することではありません。select ステートメントには多数の結合などがあり、else 条件でもう一度繰り返したくありません。
編集 #2: 悪い - テーブルをもう一度確認したところ、NULL
ステータスのレコードが含まれていますが、これは望ましくありません。ここにテーブルがあります -
Id Status
--------------
1 A
2 I
3 P
4 NULL
が「-1」の場合@Status
(パラメーターをデフォルトで -1 に設定します)、1, 2, 3
レコードが必要です。クエリの書き方