Работа с параметрами диапазона дат в SQL Server Reporting Services (SSRS) может быть вызовом. SSRS не предоставляет простого способа использования одного параметра для указания начальной и конечной даты. Это может вызывать разочарование и необходимость указывать отдельные параметры для начальной и конечной дат.
Однако есть решение этой проблемы. Создавая динамически заполняемое представление, вы можете вычислять значения дат на лету с помощью системных функций. Это представление позволяет объединять и контролировать диапазоны дат без постоянного обновления таблицы или принуждения пользователей выбирать отдельные начальные и конечные даты.
Давайте посмотрим, как создать представление с тремя столбцами, которое включает описание периода, начальную дату и конечную дату. Мы предположим, что финансовый год начинается 1 октября. Вот пример кода для создания представления диапазона дат:
CREATE VIEW [V_DATE_RANGE] AS SELECT CONVERT(varchar(100), 'Год по настоящее время') AS [Период], CONVERT(datetime, '1/1/' + CAST(YEAR(GETDATE()) AS varchar(4))) AS НачальнаяДата, CONVERT(datetime, CONVERT(date, GETDATE())) AS КонечнаяДата UNION ALL SELECT CONVERT(varchar(100), 'Сегодня') AS [Период], CONVERT(datetime, CONVERT(date, GETDATE())) AS НачальнаяДата, CONVERT(datetime, CONVERT(date, GETDATE())) AS КонечнаяДата -- Добавьте больше диапазонов дат при необходимости
После создания представления вы можете использовать его для создания параметра в отчете. Этот параметр может быть заполнен из набора данных, который выполняет представление. В конструкторе отчетов создайте набор данных, который извлекает доступные диапазоны дат из представления.
Затем создайте параметр с именем “Период” и установите его для использования только что созданного набора данных. Этот параметр позволит пользователям выбирать желаемый диапазон дат для отчета.
Чтобы получить данные отчета на основе выбранного диапазона дат, вы можете объединить представление с набором данных деталей отчета. Вот общая форма запроса данных:
SELECT [столбцы] FROM [Некоторая таблица] INNER JOIN V_DATE_RANGE DR ON DR.Период = @Период AND [начальная дата] >= DR.НачальнаяДата AND [конечная дата] < DR.КонечнаяДата+1
При запуске отчета пользователи будут представлены вариантами параметров на основе доступных диапазонов дат. Выбранный диапазон дат будет использоваться для фильтрации данных отчета, и диапазон будет отображаться в заголовках отчета.
Используя этот подход, вы можете предоставить пользователям более гибкий и динамический способ указания диапазонов дат в отчетах SSRS. Кроме того, вы можете легко добавлять новые диапазоны дат в представление по мере необходимости, что делает его масштабируемым решением для ваших потребностей в отчетности.
Не забудьте учесть некоторые ограничения, такие как удержание количества диапазонов дат в разумных пределах для пользователей и настройку синтаксиса для более старых версий SQL Server при необходимости.
С небольшим упорством вы можете улучшить опыт отчетности SSRS для своих клиентов, реализовав простой параметр диапазона дат на основе представления.
Джон Ф. Тамбуро – главный администратор баз данных в Landauer, Inc., ведущем авторитете в области измерения радиации, физики и образования. Вы можете найти Джона в Twitter по адресу @SQLBlimp и прочитать его блог на www.sqlblimp.com.