SSRS图表查询和数据系列

时间:2015-11-11 15:45:55

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

我是这个论坛的新手,但我想问一下报表服务中的图表,我也是新手。

我想创建一个名为Months的图表数据系列,显示4月到3月的数据。但是,表和查询中的数据设置如下,没有monthname;返回数据字段; Ref, Year, Month1datavalue, Month2datavalue, Month3datavalue.... Month12datavalue

查询如下:

SELECT     ChartData.Year, ChartData.Month1, ChartData.Month2, ChartData.Month3, ChartData.Month4, ChartData.Month5, ChartData.Month6, ChartData.Month7, 
                      ChartData.Month8, ChartData.Month9, ChartData.Month11, ChartData.Month10, ChartData.Month12, ChartData.SeriesName, ChartData.ColorName, ChartData.Style, 
                      Performance.ReferenceNo, Performance.ShortName, Performance.FullName, Performance.Description, Performance.Active, Performance.Deleted
FROM         ChartData INNER JOIN
                      Performance ON ChartData.PerformanceID = Performance.PerformanceID
WHERE     (ChartData.Year = 2015)

我创建了图表,但month1data显示为month2data的单独系列。理想情况下,我希望month1data,month2data,month3data字段能够作为一个系列能够在横轴标题中显示月份名称。

任何想法,比如新手?

由于

1 个答案:

答案 0 :(得分:1)

根据您的查询和问题中发布的问题,我使用示例数据重新创建了您的方案。

更新:我已更新查询以返回年份编号。这允许您将月份的名称放在x轴上。

试试这个:

With pivot_cte as
(
SELECT 
    ChartData.[Year],ChartData.Month1, ChartData.Month2, ChartData.Month3, ChartData.Month4,
    ChartData.Month5, ChartData.Month6, ChartData.Month7, ChartData.Month8, ChartData.Month9,
    ChartData.Month11, ChartData.Month10, ChartData.Month12, ChartData.SeriesName,
    ChartData.ColorName, ChartData.Style, Performance.ReferenceNo, Performance.ShortName,
    Performance.FullName, Performance.Description, Performance.Active, Performance.Deleted
FROM 
    ChartData INNER JOIN Performance ON ChartData.PerformanceID = Performance.PerformanceID
WHERE
    (ChartData.Year = 2015)
)
select
    [Year],
    SeriesName, 
    ColorName,
    Style,
    ReferenceNo,
    ShortName,
    FullName,
    [Description],
    Active,
    Deleted,
    ROW_NUMBER() OVER (ORDER BY (SELECT 0)) [Month], --New line added in UPDATE
    Value
from
    (select * from pivot_cte) p
UNPIVOT
    (Value FOR [Values] in
    (Month1,Month2,Month3,Month4,Month5,Month6,Month7,Month8,Month9,Month10,Month11,Month12)
    ) as unpivot_dt;

这将为您提供列作为行,并允许您只创建一个数据系列。此外,它还会返回Month列,以便将月份名称放在x轴上。

仅使用演示目的运行updated小提示数据示例,并记下图表所需的数据结构。

随着小提琴中暴露的数据我创建了这个图表。系列中有Value字段,类别组中有Month字段。

enter image description here

在类别Gropus中右键单击Month字段,转到Category Groups properties并为Label添加以下表达式。

=Choose(Fields!Month.Value,
"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"
)

enter image description here

这将预览以下图表。

enter image description here

如果您只想显示 4月 5月过滤数据集,请右键单击数据集并转到属性,在属性中转到filter选项卡,然后单击“添加”按钮。

enter image description here

在表达式1中放置此表达式:

=CStr(Fields!Month.Value)

表达式2放置了这个:

=Split("4,5",",")

注意我为4添加了Apr,为5添加了May,因此,如果您需要展示OctNov和{{ 1}}你应该放Dec

使用过滤器,图表会显示=Split("10,11,12",",")Apr

enter image description here

如果这可以帮到你,请告诉我。