Как бы я превратил этот оператор CASE в предложении WHERE в параметр с множественным выбором?

#sql #reporting-services #parameters

#sql #службы отчетов #параметры

Вопрос:

Мне нужно иметь возможность выбирать все 3 из них, когда я создаю это в отчете. Я знаю, что это немного глупо с третьим вариантом, но клиент хочет иметь возможность щелкнуть все 3.

 AND CASE WHEN @Display IN (1) AND (POPGT.LimitedQty >= 1 OR POPDX.LimitedQty >= 1) THEN 1
     WHEN @Display IN (2) AND (POPGT.NewSingleOrderQty >= 1 OR POPDX.NewSingleOrderQty >= 1) THEN 1
     WHEN @Display IN (0) THEN 1 END = 1
  

Комментарии:

1.Обычно в AND предложении лучше использовать конструкции OR / case вместо выражений WHERE .

Ответ №1:

Не используйте case выражение. Что-то вроде этого:

 (@Display IN ('1', '*') AND (POPGT.LimitedQty >= 1 OR POPDX.LimitedQty >= 1)) OR
(@Display IN ('2', '*') AND (POPGT.NewSingleOrderQty >= 1 OR POPDX.NewSingleOrderQty >= 1)) OR
(@Display IN ('0', '*'))
  

Комментарии:

1. Я заставил его работать так, как я хотел, немного переключив его (‘1’ В (@Display) И (POPGT. LimitedQty >= 1 ИЛИ POPDX.LimitedQty >= 1)) ИЛИ (‘2’ В (@Display) И (POPGT. NewSingleOrderQty >= 1 ИЛИ POPDX.NewSingleOrderQty >= 1)) ИЛИ (‘0’ В (@Display))