SSRS 图表查询和数据系列

SSRS Charts Query and Data Series

我是这个论坛的新手,但我想问一下 Reporting Services 中的图表,我也完全是新手。

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

新手有什么想法吗?

谢谢

根据您在问题中发布的查询和要求,我使用示例数据重新创建了您的场景。

更新: 我已将查询更新为 return 年中的月份。这让您可以将月份的名称放在 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;

这将为您提供列作为行,并让您只创建一个数据系列。它还将 return 一个 Month 列,以便将月份名称放在 x 轴上。

运行 updated fiddle 数据示例仅用于演示目的,并注意图表所需的数据结构。

根据 fiddle 中公开的数据,我创建了这张图表。在系列中使用 Value 字段,在类别组中使用 Month

在 Category Gropus 中右键单击 Month 字段,转到 Category Groups properties 并为 Label.

输入以下表达式
=Choose(Fields!Month.Value,
"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"
)

这将预览以下图表。

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

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

=CStr(Fields!Month.Value)

对于表达式 2 放这个:

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

请注意,我将 4 用于 Apr,将 5 用于 May,因此如果您需要显示 OctNovDec 你应该放 =Split("10,11,12",",")

使用过滤器,图表将显示 AprMay

如果这对您有帮助,请告诉我。