【问题标题】:SSRS Line chart NULL VALUE - Horizontal LineSSRS 折线图 NULL VALUE - 水平线
【发布时间】:2015-03-27 21:48:27
【问题描述】:

我希望有人可以帮助我。我创建了一个 SSRS (2012) 报告,随着时间的推移绘制多个系列。图表如上所示。通过使空点值与线本身具有相同的颜色和大小,许多非连接点很容易“连接起来”。我已经用 MC113 证明了这一点。这一切都很好——我在网上找到了很多有用的信息来帮助我解决这个问题。我遇到的问题是领先的(有时是滞后的)水平线(圆圈)。这就是该系列中的数据与其余数据在同一点开始或结束的地方(上面的示例似乎始于 2009 年,而其余数据始于 2005 年)。

数据集来自查询,这些点作为 NULL 值返回。我怎样才能删除这条线——这样在这种情况下——这条线将从 2009 年开始?我已经尝试过过滤——但这只会截断所有系列(到 2009 年),而不仅仅是过滤 MC113。

有人有什么建议吗?也许我需要研究如何从我的查询中呈现数据?

目前是这样的:

任何帮助将不胜感激!

【问题讨论】:

    标签: reporting-services ssrs-2012


    【解决方案1】:

    好的-这里变得丑陋了...我认为您可能需要在 TSQL 中执行此操作以找到每个系列的值为 not null 的最低日期以及该日期是否早于该日期, 设置线条颜色为白色

    下面的代码将创建列来确定是否显示数据点

        WITH x AS  (
                      Select SampleDate, MC113,MC114,MC46,MC47,MC48
                      From sometable
    )
    ,MinDates AS (
    SELECT MC113MinDate = (SELECT Min(SampleDate) FROM x WHERE MC113 IS NOT NULL)
          ,MC114MinDate = (SELECT Min(SampleDate) FROM x WHERE MC114 IS NOT NULL)
          ,MC46MinDate = (SELECT Min(SampleDate) FROM x WHERE MC46 IS NOT NULL)
          ,MC47MinDate = (SELECT Min(SampleDate) FROM x WHERE MC47 IS NOT NULL)
          ,MC48MinDate = (SELECT Min(SampleDate) FROM x WHERE MC48 IS NOT NULL)
          )
    SELECT x.SampleDate
            ,MC113,ShowMC113 = CASE WHEN MC113 IS NULL THEN CASE WHEN MC113MinDate >= x.SampleDate THEN 0 ELSE 1 END ELSE 1 END
            ,MC114,ShowMC114 = CASE WHEN MC114 IS NULL THEN CASE WHEN MC114MinDate >= x.SampleDate THEN 0 ELSE 1 END ELSE 1 END
            ,MC46,ShowMC46 = CASE WHEN MC46 IS NULL THEN CASE WHEN MC46MinDate >= x.SampleDate THEN 0 ELSE 1 END ELSE 1 END
            ,MC47,ShowMC47 = CASE WHEN MC47 IS NULL THEN CASE WHEN MC47MinDate >= x.SampleDate THEN 0 ELSE 1 END ELSE 1 END
            ,MC48,ShowMC48 = CASE WHEN MC48 IS NULL THEN CASE WHEN MC48MinDate >= x.SampleDate THEN 0 ELSE 1 END ELSE 1 END
    FROM x CROSS JOIN MinDates
    

    然后设置你的 Color 和系列的空点属性设置你已经完成的颜色,取决于值 ShowMC113、ShowMC114 等

    注意:让图例显示您选择的颜色而不是白色有些棘手,但希望这会给您一个去处...

    【讨论】:

    • 非常非常印象深刻!这很有意义,我不明白为什么它不起作用。所以我尝试了它......我得到了同样的东西。这次我上传了查询数据的快照(显示您的查询正在做它应该做的)和我用于空点颜色的表达式 =iif(Fields!ShowMC113.Value = 0, "Red","Blue"),再次 - 红色显示正在发生的事情。我的颜色表达是一样的。为了清楚起见,我删除了其他系列(并查看它是否有效果...我为方法、出色的代码和聪明的方法 +1。非常感谢@trubs 的帮助。您还有其他想法吗??
    【解决方案2】:

    你可以将线条的颜色设置为表达式吗?

    =iif(isNothing(Fields!SelectedValue.Value),'No Color',"LightBlue")
    

    【讨论】:

    • 谢谢@trubs,不幸的是这并没有达到预期的效果。正如您从编辑(新图片)中看到的那样,水平线保持不变,而 IsNothing 将颜色从红色变为蓝色,其中连续数据不存在于数组“内”。似乎导致数组开头的空值没有以相同的方式处理并且被忽略......?使用的公式是 =iif(isNothing(Fields!MC113.Value),"Blue","Red")(以显示此示例)。你还有其他想法吗?再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多