Reporting services 根据数值显示月份名称

Reporting services 根据数值显示月份名称,reporting-services,Reporting Services,我有一个像这样的数据集 ProjectName MonthsThisYear CompletionDate ProjectA 5 5/1/2013 ProjectB 7 7/15/2013 ProjectC 10 10/21/2013 我想画一个条形图,其中Y轴是项目名称,X轴是2013年1月

我有一个像这样的数据集

ProjectName         MonthsThisYear    CompletionDate
ProjectA                  5               5/1/2013
ProjectB                  7               7/15/2013
ProjectC                 10              10/21/2013
我想画一个条形图,其中Y轴是项目名称,X轴是2013年1月,2013年2月。。。2013年12月

现在,projectA的条必须是5个单位长,ProjectB的条必须是7个单位长,ProjectC的条必须是10个单位长

因此,人们可以看到项目A在5月完成,项目B在7月完成,项目C在10月完成

我如何绘制这个图表

目前我可以正确地绘制这个。。。但是X-Asix上有0、2、4、6、8、10、12个月名,而不是月份名

我在SSRS2008R2上

这就是我现在看到的


我只想在X轴上查看月份名称和年份。

也许更多的问题细节会有用,但有一种方法可以处理数据:

我们面临的主要问题是,通常日期是类别,但在本例中,它实际上是数据值,与类别组相比,它使我们对标签的控制更少

首先,根据
ProjectName
设置一个包含类别组的图表,并使用如下数据表达式:

=DateSerial(Year(Fields!CompletionDate.Value), Month(Fields!CompletionDate.Value), 1)
i、 e.每个
CompletionDate
值月份的第一个月,否则您的条形图将在两个月之间

接下来,我们需要整理X轴:

在我的示例中,我将最小值设置为:

=DateAdd(DateInterval.Month
  , -1
  , DateSerial(Year(Min(Fields!CompletionDate.Value)), 1, 1))
=DateSerial(Year(Max(Fields!CompletionDate.Value)), 12, 31)
i、 e.去年12月。将最大值设置为:

=DateAdd(DateInterval.Month
  , -1
  , DateSerial(Year(Min(Fields!CompletionDate.Value)), 1, 1))
=DateSerial(Year(Max(Fields!CompletionDate.Value)), 12, 31)
i、 e.年底

将间隔设置为
1
,间隔类型设置为
Months

将X轴格式化为
MMM-yyyy

看起来不错:


如果您可以实际添加一个值为2013或其他值的
Year
列,那么上面几乎所有的表达式都可以简化。例如,我忽略了今年的
,但是如果您有
列,您可以基于
今年的月

来构建月初值,日期范围是否总是针对特定的一年?如果是这样,您是否有可能将今年作为数据集的一个字段,即每行都有一个带有2013的年份字段?此外,0处的标签应该是什么?您可以使用
DateName(month,DateAdd(month,@MonthNumber,-1))
将x轴转换为月份名称。函数取自编辑数据集,并使用上述函数创建一个新字段
monthName
。然后使用
monthsisear
作为您的类别,但在标签中显示
monthName
而不是
monthsisear
。您可以屏蔽0以显示为空白。嗯