我看过网上但找不到我需要的答案。
在SSRS 2008中,我有一个数据集,返回与此类似的结果:
Category Value
-------- -----
18 35
18 42
26 45
30 50
30 42
40 50
如您所见,单个类别(或X轴)值(例如18)可能具有多个系列(或Y轴)值(对于18个值,这些值为35 和 42)。 当试图在SSRS-2008报告图表中绘制时,我只能为每个X显示单个Y值 - 最大值,最小值,平均值,第一个等。
我需要的是显示与this类似的图表: MyChart http://img34.imageshack.us/img34/3990/chartexk.png。 您对如何实现这一点有任何想法吗?
感谢您的回答!
答案 0 :(得分:4)
以下不是一个完美的解决方案。的 This is more of a hack to achieve the results
即可。如果您决定使用它,请谨慎使用此方法。这可能无法始终产生预期的结果。
由于SSRS未在行图表上区分同一轴上的两个值,因此您可以执行以下示例中所示的操作。该示例使用SSRS 2008 R2
,报告数据集中使用的查询仅适用于SQL Server 2005 or above
。
分步流程:
在SQL Server数据库中,使用 SQL Scripts 部分下提供的脚本创建名为dbo.ReportData
的表。
使用数据填充表格,如屏幕截图# 1 所示。我已经使用了问题中提供的数据,但还添加了一个标识列来维护订单。
创建SSRS报告并使用以下查询创建名为ReportData的数据集:
SELECT Category + RANK() OVER(PARTITION BY Category ORDER BY Id) * .0001 AS Fraction, Category, Value FROM dbo.ReportData ORDER BY Id
。请参阅屏幕截图# 2 。
上面给出的数据集查询按行类别对行进行分区,然后根据 Id 列在每个类别中指定排名。此排名值乘以.0001,然后将“类别”列中的值添加到此分数中。此计算列几乎提供与Category相同的值,但通过保持值唯一而相差千分之一。请参阅屏幕截图# 3 以获取此查询的输出。
在报表上,放置“线条类型”的“图表”控件并配置“图表数据”部分,如屏幕截图# 4 所示。 Fraction 列(新计算的列)应位于Category Groups
部分,值列应位于Values
部分图表。
右键点击X轴并选择Horizontal Axis Properties...
参考屏幕截图# 5 。
配置水平轴属性,如屏幕截图# 6 所示。对于Maximum dropdown,单击Function(fx)按钮并配置表达式,如屏幕截图# 7 所示。
对于屏幕截图# 1 中显示的数据,报告执行会产生屏幕截图# 8 中显示的结果。与问题中提供的图表类似。
让我们重新排列表格中的行,并添加更多其他行,如屏幕截图# 9 所示。
对于屏幕截图# 9 中显示的数据,报告数据集查询将生成屏幕截图# 10 中显示的结果,并且报告执行将产生输出屏幕截图中显示了# 11 。
希望有所帮助。
SQL脚本:
CREATE TABLE [dbo].[ReportData](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Category] [int] NOT NULL,
[Value] [int] NOT NULL,
CONSTRAINT [PK_ReportData] PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY]
GO
屏幕截图#1:
屏幕截图#2:
屏幕截图#3:
屏幕截图#4:
屏幕截图#5:
屏幕截图#6:
屏幕截图#7:
屏幕截图#8:
屏幕截图#9:
屏幕截图#10:
屏幕截图#11: