Я застрял здесь. Может ли кто-нибудь помочь в следующем сценарии? Я не могу использовать IN ниже, есть ли другой способ?SQL Server: WHERE, CASE, IN use
DECLARE @Search_type INT = NULL --can be 1/2
@search_value INT = NULL --its an id
SELECT * FROM r_table r
WHERE
(
-- other conditions
)
AND
(
r.id IN
CASE @Search_type
WHEN 1 THEN (SELECT e.r_id FROM e_table e WHERE @search_value = e.id)
WHEN 2 THEN (SELECT e.r_id FROM e_table e WHERE @search_value = e.b_id)
END
)
Можете ли вы объяснить, что вы пытаетесь сделать, ожидаемый результат, и что происходит, когда вы используете ваш текущий код? – PHeiberg
Что такое выход? Каков ожидаемый результат? – AVProgrammer
@PHeiberg В первом случае условие i может напрямую сравнить его с идентификатором таблицы с идентификатором search_value Во втором случае я должен сравнить идентификатор таблицы с списком идентификаторов ids'а, который будет получен из оператора select – kiddo