#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» удовлетворит третьему условию и вернет все строки.