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"
)
这将预览以下图表。
如果只想显示 Apr 和 May 过滤数据集,右键单击数据集并转到属性,在属性转到 filter
选项卡,然后单击添加按钮。
在表达式 1
中放入此表达式:
=CStr(Fields!Month.Value)
对于表达式 2
放这个:
=Split("4,5",",")
请注意,我将 4
用于 Apr
,将 5
用于 May
,因此如果您需要显示 Oct
、Nov
和Dec
你应该放 =Split("10,11,12",",")
使用过滤器,图表将显示 Apr
和 May
。
如果这对您有帮助,请告诉我。
我是这个论坛的新手,但我想问一下 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"
)
这将预览以下图表。
如果只想显示 Apr 和 May 过滤数据集,右键单击数据集并转到属性,在属性转到 filter
选项卡,然后单击添加按钮。
在表达式 1
中放入此表达式:
=CStr(Fields!Month.Value)
对于表达式 2
放这个:
=Split("4,5",",")
请注意,我将 4
用于 Apr
,将 5
用于 May
,因此如果您需要显示 Oct
、Nov
和Dec
你应该放 =Split("10,11,12",",")
使用过滤器,图表将显示 Apr
和 May
。
如果这对您有帮助,请告诉我。