質問

私は、次のクエリを持っています:

DECLARE @IsStocked bit
SELECT * FROM Products p WHERE p.LastSeen >  GETDATE() - 30 

これは、過去30日以内に見られているすべてのの製品を返します。

私の質問は、私はのみ適用されますp.LastSeen > GETDATE() - 30@IsStocked = true句をしたいと思い、である。

これは、より大きなクエリの一部であり、そしてIはIF / ELSE文を使用せずにこれを達成したい(すなわち句は完全に無視されている場合の@IsStocked = false部をp.LastSeen > GETDATE() - 30場合)。

ありがとうございます。

役に立ちましたか?

解決

DECLARE @IsStocked bit

SELECT * FROM Products p
WHERE  @IsStocked = 0 OR (p.LastSeen > GETDATE() - 30);

他のヒント

DECLARE @IsStocked bit;

SELECT * 
FROM Products p
WHERE (@IsStocked = 1 AND p.LastSeen > GETDATE() - 30) 
OR     @IsStocked = 0;

ここに私のクエリは、あなたの質問に応じている。

DECLARE @IsStocked bit
Set @IsStocked=1
Select * from Product
Where LastSeen  = Case When (@IsStocked=1) THEN GETDATE() - 30 
                   Else LastSeen  END

役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top