使用 SSRS 2008,我需要按 25 天的销售额分组,并需要在折线图中反映相同的情况。以便 X 轴包含日期差异,例如。1 月 13 日 1 日至 25 日,13 年 1 月 26 日至 2 月 19 日,依此类推,直到标量 @endate...,y 轴代表实现的对应销售额。我已经按周和月分组并意识到这一点,但是当它相差 25 天时,我有点困惑。对此的任何提示将不胜感激。谢谢。
问问题
4637 次
1 回答
2
要在报告级别执行此操作,您可以创建一个计算列来对各个日期进行分组。我使用了以下表达式:
=DateAdd(DateInterval.Day
, 25 * Floor
(
(DateDiff(DateInterval.Day, CDate("01-Jan-2013"), Fields!date.Value)
/ 25)
)
, CDate("01-Jan-2013"))
基本上,它计算自年初以来每个日期的天数,将其除以 25 并向下舍入,然后使用这个新数字来计算该期间的开始日期。
我已经在年初日期进行了硬编码,但您可以轻松地基于此参数或表达式。
这给出了一些样本数据的以下结果:
您可以看到他们的分组日期值符合预期。基于此,您也可以在图表中轻松地将它们组合在一起。
评论后编辑
也许你可以仔细检查你的表情?我认为在数据集中设置计算字段比直接在图表中设置更容易 - 然后很容易将结果放在表格中以查看一切是否正常。我根据相同的表达式扩展了上面的示例。我添加了另外两个计算字段,一个用于组结束日期:
=DateAdd(DateInterval.Day, 24, Fields!groupDate.Value)
还有一个用于创建格式良好的组标签:
=Format(Fields!groupDate.Value, "dd-MMM")
& " - "
& Format(Fields!groupDateEnd.Value, "dd-MMM")
基于这些,我添加了一个具有以下类别/系列的图表:
最终结果,按要求分组:
或者,您也可以在数据库级别执行此操作,假设那是您的数据源;只需将分组表达式更改为等效的 T-SQL:
with groupDates as
(
select *
, groupDate = dateadd(dd, 25 * (datediff(dd, '01-jan-2013', date) / 25), '01-jan-2013')
from departments
)
select department
, groupDate
, groupDateEnd = dateadd(dd, 24, groupDate)
, groupValue = sum(value)
from groupDates
group by department
, groupDate
order by department
于 2013-04-02T14:26:16.550 回答