私がやろうとしていることは、クエリに日時値を考慮させるかどうかを決めることなので、ストアドプロシージャでこれを行う必要はありません
if @considerDate =1
begin
select * from table
where dateCol = @date
end
else
begin
select * from table
end
私は何かをしたいのです
select * from table
where dateCol = ( case
when @date is not null
then @date
)
単一のクエリで
END
キーワードを追加するだけです
SELECT *
FROM tableName
WHERE dateCol = CASE WHEN @considerDate =1
THEN @date
ELSE dateCol
END
私があなたを正しく理解しているなら、これはうまくいくはずです:
SELECT *
FROM Table
WHERE dateCol =
CASE WHEN @date is not null then @date ELSE dateCol END
if @considerDate =0
begin
-- set the variable to null so the select will return all rows from table
set @date = null
end
SELECT *
FROM table
WHERE dateCol = IsNull(@date, dateCol)
クエリに日付パラメータを含めたくない場合は、値をnullに設定します。クエリでは、nullチェックを使用して、フィルタを適用するかどうかを決定できます。