式を返す「 SearchedCASEexpression」を含むCASEステートメントを使用してWHERE句に条件付きロジックを適用しようとしていますが、 WHERE句は代わりに「 SearchCondition 」を予期しているため、機能しません。下記参照。
WHERE句で「SearchedCASEexpression」を使用し、代わりに「SearchCondition」を返すようにするにはどうすればよいですか?」
WHERE
(
--user supplies both min and max price
CASE
WHEN (@MIN_PRICE IS NOT NULL AND @MAX_PRICE IS NOT NULL AND @MIN_PRICE > 0 AND @MAX_PRICE > 0) THEN
CASE
WHEN LIST_STATUS = 'Sold' THEN
SOLD_PRICE BETWEEN @MIN_PRICE AND @MAX_PRICE
ELSE --Active and Contingent
CASE
WHEN VALUE_RANGE_PRICING = 'No' THEN
LIST_PRICE_H BETWEEN @MIN_PRICE AND @MAX_PRICE
ELSE --Price Range
LOW_LIST_PRICE BETWEEN @MIN_PRICE AND @MAX_PRICE
OR
LIST_PRICE_H BETWEEN @MIN_PRICE AND @MAX_PRICE
END
END
--user supplies just max price
WHEN ((@MIN_PRICE IS NULL OR @MIN_PRICE = 0) AND @MAX_PRICE IS NOT NULL AND @MAX_PRICE > 0) THEN
CASE
WHEN LIST_STATUS = 'Sold' THEN
SOLD_PRICE <= @MAX_PRICE
ELSE --Active and Contingent
CASE
WHEN VALUE_RANGE_PRICING = 'No' THEN
SEARCH_PRICE <= @MAX_PRICE
ELSE --Price Range
LOW_LIST_PRICE <= @MAX_PRICE
END
END
--user supplies just min price
WHEN ((@MAX_PRICE IS NULL OR @MAX_PRICE = 0) AND @MIN_PRICE IS NOT NULL AND @MIN_PRICE > 0) THEN
CASE
WHEN LIST_STATUS = 'Sold' THEN
SOLD_PRICE >= @MIN_PRICE
ELSE --Active and Contingent
CASE
WHEN VALUE_RANGE_PRICING = 'No'
SEARCH_PRICE >= @MIN_PRICE
ELSE --Price Range
LIST_PRICE_H >= @MIN_PRICE
END
END
--else {do nothing} as no min/max prices supplied
END
)