これについて同様の質問がいくつか見つかりましたが、私のシナリオに適用する方法がわかりませんでした。
私の関数には@IncludeBelowというパラメーターがあります。値は 0 または 1 (BIT) です。
私はこのクエリを持っています:
SELECT p.*
FROM Locations l
INNER JOIN Posts p
on l.LocationId = p.LocationId
WHERE l.Condition1 = @Value1
AND l.SomeOtherCondition = @SomeOtherValue
@IncludeBelow が 0 の場合、クエリを次のようにする必要があります。
SELECT p.*
FROM Locations l
INNER JOIN Posts p
on l.LocationId = p.LocationId
WHERE l.Condition1 = @Value1
AND l.SomeOtherCondition = @SomeOtherValue
AND p.LocationType = @LocationType -- additional filter to only include level.
@IncludeBelow が 1 の場合、最後の行を除外する必要があります。(つまり、フィルターを適用しないでください)。
CASE
ステートメントである必要があると思いますが、構文がわかりません。
これが私が試したことです:
SELECT p.*
FROM Locations l
INNER JOIN Posts p
on l.LocationId = p.LocationId
WHERE l.Condition1 = @Value1
AND l.SomeOtherCondition = @SomeOtherValue
AND (CASE @IncludeBelow WHEN 0 THEN p.LocationTypeId = @LocationType ELSE 1 = 1)
明らかにそれは正しくありません。
正しい構文は何ですか?