【问题标题】:adding date columns in SSRS Report在 SSRS 报告中添加日期列
【发布时间】:2015-08-15 20:44:15
【问题描述】:

我创建了一份 SSRS 报告。

在报告中,我提供了一个名为startDate 的参数。从 startDate 我必须显示 10 列,如 week of dd-mon-yy

第一列包含开始日期所在周的星期一的日期。然后使用即将到来的 10 个星期一。

示例如图所示。如何在 SSRS 报告中实现这一点。我需要查询和列值。

【问题讨论】:

  • 您的主要问题是什么?从包含 startdate 的那一周开始,从星期一开始按星期获取数据?还是在 SSRS 中旋转数据?

标签: sql sql-server sql-server-2008 reporting-services


【解决方案1】:

这应该是您本周的列名别名

select 'Week of '+ CONVERT(VARCHAR(11),dateadd(week, datediff(week, 0, getdate()), 0),106);

接下来几周的别名

select  'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 1,dateadd(week, datediff(week, 0, getdate()), 0)),106);
select  'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 2,dateadd(week, datediff(week, 0, getdate()), 0)),106);
select  'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 3,dateadd(week, datediff(week, 0, getdate()), 0)),106);
select  'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 4,dateadd(week, datediff(week, 0, getdate()), 0)),106);
select  'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 5,dateadd(week, datediff(week, 0, getdate()), 0)),106);
select  'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 6,dateadd(week, datediff(week, 0, getdate()), 0)),106);
select  'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 7,dateadd(week, datediff(week, 0, getdate()), 0)),106);
select  'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 8,dateadd(week, datediff(week, 0, getdate()), 0)),106);
select  'Week of '+ CONVERT(VARCHAR(11),dateadd(week, 9,dateadd(week, datediff(week, 0, getdate()), 0)),106);

【讨论】:

    【解决方案2】:

    获取开始日期所在周的星期一的日期 连同接下来 10 个星期一的日期,您可以将查询编写为:

    DECLARE @input date
    
    SET @input = '12/29/2013'
    
    SELECT 'Week of '+
            REPLACE(CONVERT(VARCHAR(11), 
            DATEADD(wk, DATEDIFF(wk,0,@input), T.week*7)
            , 106), ' ', '-')
    FROM 
    (VALUES (-1),(0),(1),(2),(3),(4),(5),(6),(7),(8))AS T(week) 
    

    Demo

    【讨论】:

      【解决方案3】:

      您可以使用此表达式获取第一周开始日期所在周的星期一:

      =Dateadd(DateInterval.Day, 
              (0 * 7) + 1 - DatePart(DateInterval.Weekday, Parameters!startDate.Value, FirstDayOfWeek.Monday), 
              Parameters!startDate.Value)
      

      第二周:

      =Dateadd(DateInterval.Day, 
              (1 * 7) + 1 - DatePart(DateInterval.Weekday, Parameters!startDate.Value, FirstDayOfWeek.Monday), 
              Parameters!startDate.Value)
      

      等等。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-06
        • 2016-10-27
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        相关资源
        最近更新 更多