1

新しいスレッドを作成してお詫びします。のスレッドで質問を正しく組み立てることができませんでした。

SQLServer2008に次のようなテーブルがあります-

Id      Status
--------------
1        A
2        I
3        NULL

パラメータとして受け取るストアドプロシージャがあり@Statusます。

If the @Status is "-1", I need to retrieve records 1, 2. 
If the @Status is "A", I need to retrieve only record 1.
If the @Status is "I", I need to retrieve only record 2.

SELECTを使用せずに、1つのステートメントでレコードを取得できるようにしたいIF ELSE。SELECTステートメントには多くの結合などがあり、ELSE条件で同じことを繰り返したくありません。

私は以下を試しましたが、間違ったデータを取得します-

SELECT * FROM Person WHERE Status = @Status OR @Status IS NOT NULL

select * from Person
where (@Status is not null and Status = @Status) or
      (@Status is null and Status in ('A', 'P')) 
4

1 に答える 1

2

ORを使用してそれを行うことができます:

SELECT *
FROM Person
WHERE Status = @Status
OR (@Status = '-1' AND Status IS NOT NULL)

もちろんSELECT *、本番コードでは使用しないでください。

于 2012-04-25T19:57:23.637 に答える