2015-11-11 72 views
2

我是新来这个论坛,但我想问一下关于Reporting Services中的图表,我也是新手。SSRS图表查询和数据系列

我想创建一个图表数据系列,称为Months显示数据从四月到三月。但是,表格和查询中的数据设置为如下,没有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字段能够作为一个系列能够在横轴标题中显示月份名称。

任何想法,如新手?

感谢

+0

你可以发布它现在的样子吗? –

+1

分享您的查询以帮助您旋转数据集并获取正确的数据排列。 –

回答

1

根据您的查询,您的requeriments张贴在的问题,我重新创建你的方案有样本数据。

更新:我已更新查询以返回年份号的月份。这可以让你在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

如果你只想显示四月过滤器的数据集,右键单击该数据集,并转到属性,在属性去filter选项卡,然后单击添加按钮。

enter image description here

在把这个表情表达1

=CStr(Fields!Month.Value) 

对于把表达2这一个:

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

注意,我把4Apr5May,所以如果你需要显示OctNovDec你应该把=Split("10,11,12",",")

与过滤器的图表将显示AprMay

enter image description here

让我知道如果这能帮助你。

+0

谢谢alejandro提供了很大的帮助,但有一个问题,您是如何在横轴上创建月份值的? 1〜12?因为查询确实以正确的排列返回数据,但没有月份标签。 – wodz

+0

我可以在sql中订购和标记这个数据,因为Month1数据值等于Apr,Month2数据值等于May。 – wodz

+0

@wodz,检查我的答案更新。 –