【问题标题】:SSRS 2008 R2 Report. Change month grouping from calender monthSSRS 2008 R2 报告。从日历月更改月份分组
【发布时间】:2016-11-09 11:28:40
【问题描述】:

我有一份报告可以输出相对简单的客户数量。它从系统输出所有内容,因为不需要数据参数。他们想看到一切。

让我感到困惑的是,他们希望将月份按一个月的 24 日到下个月的 23 日分组。

例如,2016 年 10 月应该计算 2016 年 10 月 24 日到 2016 年 11 月 23 日之间的所有数据,之前的 9 月应该对 2016 年 9 月 24 日到 2016 年 10 月 23 日之间的所有数据进行分组等等。

简而言之,是否可以使用当月 24 日到下个月 23 日来分组月份?

很高兴提供更多信息,对于像这样的高级 ssrs 任务有点新。我确实搜索过这样的解决方案,但找不到任何合适的解决方案。非常感谢任何帮助。

【问题讨论】:

  • 我会从 SQL 应用分组,与我们分享您的查询。
  • 你的权利,谢谢,我会让 sql 做腿工作。

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


【解决方案1】:

可以通过增强您的查询来实现此要求。比如说 f.e.,你有以下内容:

select
  t.Date,
  t.AggregatedField
from SomeSchema.SomeTable as t

接下来你可以做:

select
  MonthNumber = 
    case 
      when DATEPART(DAY, t.Date) >= 24 then DATEPART(MONTH, t.Date)
      else DATEPART(MONTH, t.Date) - 1
    end,
  t.AggregatableField
from SomeSchema.SomeTable as t

您将获得的输出类似于(month_number, field_to_aggregate)。然后,您需要按 month_number 对数据进行分组,您可以直接在 SQL 中执行此操作,或使用 RDL 报告分组(考虑首先提供最佳性能)。 要构造月份名称,您可能需要提取年份编号,如下所示:

DATEPART(YEAR, t.Date)

然后使用月份编号和年份编号构造日期。

【讨论】:

  • 谢谢。我曾考虑编写一个 sql 函数来返回月份,但你的是一个更优雅的解决方案。我一定会告诉圣诞老人这件事!再次感谢。
猜你喜欢
  • 1970-01-01
  • 2021-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
相关资源
最近更新 更多