У меня есть многопозиционный снимок, содержащий 20 значений. Пользователь может выбрать все или несколько.Как написать, где условие на основе выбранного значения
Я хочу написать запрос
, если пользователь выбрал все значения, то я не хочу, чтобы передать все выбранные значения. (Я пройду 0, чтобы определить, что выбраны все значения)
Если использование выбрало несколько (или не все), то я хочу передать только те выбранные значения. (I будет проходить через запятую значения экс 101.102.103.104)
На основе значений, которые я хочу написать присоединиться таблицу или использовать его в где условие
я сделал что-то вроде как следует, но это кажется, не работает.
ГДЕ: После бросали ошибки (Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
)
DECLARE @EntitiyIds AS varchar(2500) = '0'
SELECT *
FROM Tb_CompanyType
WHERE Id IN (
CASE WHEN @EntitiyIds <> '0' THEN (SELECT Item FROM dbo.Split(@EntitiyIds, ','))
WHEN @EntitiyIds = '0' THEN (SELECT Id FROM Tb_CompanyType) END
)
INNER JOIN: (После не дает должного выход)
DECLARE @EntitiyIds AS VARCHAR(2500) = '101'
SELECT * FROM Tb_CompanyType CT
INNER JOIN Tb_Company TC ON
CASE WHEN @EntitiyIds = '0' AND TC.CompanyId = CT.Id THEN 1
WHEN @EntitiyIds <> '0' AND TC.CompanyId = (SELECT Item FROM dbo.Split(@EntitiyIds, ',')) THEN 1 END = 1
dbo.Split возвращает таблицу, содержащую разделенные запятыми значения
Просьба помочь
Это шаблон, который я использую во многих сценариях отчетности, по сравнению с использованием я обнаружил, что он превосходен с точки зрения удобочитаемости (ясно, что мы хотим иметь одинаковые выходные поля в двух сценариях фильтрации) и удобство использования. (Не нужно повторно объявлять поля выбора и другие условия соединения) –