Использование НЕ РАВНО НУЛЮ и равно НУЛЮ в качестве параметров в SSRS?

#sql-server #reporting-services #parameters

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

Вопрос:

Я создаю отчет SSRS, в котором мне нужно иметь параметр с именем Status, а значения будут «Текущими», «Бывшими» или в основном выбирать их оба с точки зрения отображения как текущего, так и предыдущего.

Этот параметр будет ссылаться на столбец даты, и если (date is NULL OR date > GETDATE()) тогда они будут считаться «текущими»

Если (date is not NULL AND date < GETDATE()) тогда они будут считаться «бывшими»

Я пробовал использовать в предложении WHERE (WHERE DATE @NULL OR DATE > GETDATE()) и аналогично с «Прежним» значением параметра, но я не уверен, что в SSRS, если возможно, передать значения IS NULL и NOT NULL для этих значений параметров.

Пример данных таблицы:

 Name     Date
John     NULL
Bill     2/27/2021
Bob      2/1/2021
 

Итак, в этом примере Джон — «Текущий», Билл по-прежнему «Текущий», а Боб — «Бывший».

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

1. Если date < GETDATE() имеет значение true, нет необходимости проверять, что date не равно NULL .

2. Пожалуйста, предоставьте примеры данных, желаемые результаты и добавьте соответствующий тег базы данных.

3. Важен контекст. Что именно вы подразумеваете под «в основном выбором их обоих»? Является ли ваш параметр «необязательным» и что вы хотите включить все, когда этот параметр «не установлен»?

4. Параметр был бы обязательным, и если бы мы решили выбрать как «Текущий», так и «Бывший», он отображал бы результаты как для текущих, так и для бывших сотрудников на основе столбца даты.

5. (единственный) параметр не может содержать несколько значений («Текущее» и «Прежнее»). Ваш параметр отчета, вероятно, является строкой — вы собираетесь каким-то образом встроить в него оба этих слова? И тогда как этот параметр используется в источнике данных отчета? Без контекста людям будет сложно помочь.

Ответ №1:

Я думаю, что вы ищете это:

 WHERE (@param = 'Current' AND (Date is NULL OR date > GETDATE()))
 OR (@param = 'Former' AND Date <= GETDATE())
 OR @param = 'All'
 

Как сказал ярлх, вам не нужно проверять наличие «не равно нулю и меньше» во второй строке.

Не уверен, что вы имели в виду, говоря «в основном выбирая их оба», поэтому я предположил третий вариант для «всех». Если параметр, равный null, вызывает это вместо этого, вы должны иметь возможность изменить последнюю строку на:

 OR @param is NULL
 

Тогда «NULL РАВНО NULL» удовлетворит третьему условию и вернет все строки.