SSRS 2017 Каскадные параметры с датами - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть параметр с именем Year, и вы можете выбрать один год за раз.У меня есть параметр даты / времени с календарем start date и другим с именем end date.

. Я бы хотел, чтобы он работал так, чтобы, если я выберу год 2017, он покажет начало календаря.и даты окончания 2017 года.

Поскольку параметры даты начала и окончания не установлены по умолчанию из набора данных, я не уверен, как это контролировать.

Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Я использовал рекурсивное общее табличное выражение CTE , которое ссылается на себя, чтобы решить эту проблему.Затем вы можете установить Dataset параметров start_date и end_date.

Набор данных для значений по умолчанию параметров начальной и конечной даты

DECLARE @year AS INT
SET @year = 2018

SELECT [start_date] = DATEFROMPARTS(@year, 1, 1), [end_date] = DATEFROMPARTS(@year, 12, 31)

Набор данных для доступныхзначения параметров даты начала и окончания

DECLARE @year AS INT
SET @year = 2018

;WITH
source_data_dates
AS
(
    SELECT 
          [date_start] = DATEFROMPARTS(@year, 1, 1)
        , [date_end] = DATEFROMPARTS(@year, 12, 31) 
)
,
year_date_list([rn], [date_value]) 
AS
(
    SELECT 
          [rn] = 1
        , [date_value] = CAST([date_start] AS DATETIME) 
    FROM 
        source_data_dates
    UNION ALL
    SELECT 
          [rn] = [rn] + 1
        , [date_start] = CAST(DATEADD(DAY, [rn], [date_start]) AS DATETIME) 
    FROM 
          year_date_list
        , source_data_dates 
    WHERE 
        [rn] <= DATEDIFF(DAY, [date_start], [date_end])
)
SELECT 
      [rn]
    , [date_value]
FROM 
    year_date_list
OPTION (MAXRECURSION 0)

Результаты:

screenshot

0 голосов
/ 21 ноября 2018

Вы можете сделать это как выражение, но для упрощения SQL вы можете просто создать второй набор данных со следующим:

select convert(date, '1 jan ' + convert(varchar(4), @Year)), dateadd(day, -1, dateadd(year, 1, convert(date, '1 jan ' + convert(varchar(4), @Year))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...