SSRS行\散点图中单个X的多个Y值

时间:2011-07-12 05:24:50

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

我看过网上但找不到我需要的答案。

在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。 您对如何实现这一点有任何想法吗?

感谢您的回答!

1 个答案:

答案 0 :(得分:4)

以下不是一个完美的解决方案。的 This is more of a hack to achieve the results 即可。如果您决定使用它,请谨慎使用此方法。这可能无法始终产生预期的结果。

由于SSRS未在图表上区分同一轴上的两个值,因此您可以执行以下示例中所示的操作。该示例使用SSRS 2008 R2,报告数据集中使用的查询仅适用于SQL Server 2005 or above

分步流程:

  1. 在SQL Server数据库中,使用 SQL Scripts 部分下提供的脚本创建名为dbo.ReportData的表。

  2. 使用数据填充表格,如屏幕截图# 1 所示。我已经使用了问题中提供的数据,但还添加了一个标识列来维护订单。

  3. 创建SSRS报告并使用以下查询创建名为ReportData的数据集: SELECT Category + RANK() OVER(PARTITION BY Category ORDER BY Id) * .0001 AS Fraction, Category, Value FROM dbo.ReportData ORDER BY Id。请参阅屏幕截图# 2

  4. 上面给出的数据集查询按行类别对行进行分区,然后根据 Id 列在每个类别中指定排名。此排名值乘以.0001,然后将“类别”列中的值添加到此分数中。此计算列几乎提供与Category相同的值,但通过保持值唯一而相差千分之一。请参阅屏幕截图# 3 以获取此查询的输出。

  5. 在报表上,放置“线条类型”的“图表”控件并配置“图表数据”部分,如屏幕截图# 4 所示。 Fraction 列(新计算的列)应位于Category Groups部分,列应位于Values部分图表。

  6. 右键点击X轴并选择Horizontal Axis Properties...参考屏幕截图# 5

  7. 配置水平轴属性,如屏幕截图# 6 所示。对于Maximum dropdown,单击Function(fx)按钮并配置表达式,如屏幕截图# 7 所示。

  8. 对于屏幕截图# 1 中显示的数据,报告执行会产生屏幕截图# 8 中显示的结果。与问题中提供的图表类似。

  9. 让我们重新排列表格中的行,并添加更多其他行,如屏幕截图# 9 所示。

  10. 对于屏幕截图# 9 中显示的数据,报告数据集查询将生成屏幕截图# 10 中显示的结果,并且报告执行将产生输出屏幕截图中显示了# 11

  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:

    1

    屏幕截图#2:

    2

    屏幕截图#3:

    3

    屏幕截图#4:

    4

    屏幕截图#5:

    5

    屏幕截图#6:

    6

    屏幕截图#7:

    7

    屏幕截图#8:

    8

    屏幕截图#9:

    9

    屏幕截图#10:

    10

    屏幕截图#11:

    11