【问题标题】:SSRS 2017 Cascading parameters with datesSSRS 2017 带日期的级联参数
【发布时间】:2019-04-23 13:56:36
【问题描述】:

我有一个名为Year 的参数,您可以一次选择一年。我有一个日期/时间参数,带有一个名为 start date 的日历和另一个名为 end date 的日历。

我希望它能够工作,如果我选择 2017 年,它将显示 2017 年的日历开始和结束日期。

由于我的开始日期和结束日期参数不是来自数据集的默认值,我不确定如何控制它。

任何帮助将不胜感激。

【问题讨论】:

  • 我假设你的意思是你想默认开始和结束日期参数,然后用户可以修改它们?即 Year 参数是设置开始和结束日期的快捷方式?
  • 是的,如果我选择 2017 年,我希望日历开始日期和结束日期显示 2017 年的月份。我正在使用 SQL 服务器数据库
  • 您可以标记数据库版本,您可以尝试下面的答案并询问您是否需要更多帮助。

标签: sql-server tsql reporting-services parameters


【解决方案1】:

您可以将其作为表达式来执行,但在 SQL 中更容易,您可以使用以下内容创建第二个数据集:

select convert(date, '1 jan ' + convert(varchar(4), @Year)), dateadd(day, -1, dateadd(year, 1, convert(date, '1 jan ' + convert(varchar(4), @Year))))

【讨论】:

    【解决方案2】:

    我使用了一个递归的CTE common table expression 来引用自身来解决这个问题。然后可以设置start_date和end_date参数的Dataset。

    开始和结束日期参数的默认值的数据集

    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)
    

    结果:

    【讨论】:

    • 年份值来自 sql server 的另一个数据集。我以 2017 年为例,但有几个可用的年份..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多