代码之家  ›  专栏  ›  技术社区  ›  JustPeachy

SSRS:范围条形图不显示基于日期范围的重复状态

  •  0
  • JustPeachy  · 技术社区  · 7 年前

    我有一个查询,根据所需的日期范围(参数)为我提供项目的每日状态。此状态会有所不同,并且可以重复。例如,它可以按时间顺序为:操作、维修、检查、操作、检查。如您所见,操作和;检查代表两次,但时间不同。虽然这是真的,但我似乎无法在范围条形图中以图形方式表示,因为它只会显示每个状态的一个实例(如图所示)。该图指示应在何处显示剩余状态。

    Range bar Chart Error

    我正在使用的数据集如下:

    Range bar Chart Error Data

    如您所见,图表应按以下顺序表示4种状态:检查、运行、维修、运行,但不显示第二种运行状态。

    有人能帮助我克服这个特殊的障碍吗?这是不可能的吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Alan Schofield    7 年前

    这将为您指明正确的方向。。。我可能会这样做。

    您需要向数据集添加额外的列。我将您的数据集复制到一个表变量中,然后使用以下内容获取附加列

    -- this just replicates your data..    
    DECLARE @t TABLE(StatusDate DATE, StatType varchar(20), statStart DateTime, statEnd DateTime, StatusDays int)
    
        INSERT INTO @t VALUES
        ('2017-02-16', 'Inspection', '2017-01-30 12:49:14', '2017-02-21 12:49:14', 22),
        ...
        ...
        ('2017-03-14', 'Operational', '2017-03-01 11:49:11', '2017-04-19 15:19:48', 49)
    
    -- the important bit    
        SELECT 
            *
            , DENSE_RANK() OVER(ORDER BY statStart) as Sort
         FROM @t
    

    这为我们提供了以下输出。

    enter image description here

    我们可以在SSRS中使用这个额外字段来正确分组和排序数据。

    enter image description here

    然后,我对chart series color属性使用以下表达式,以确保颜色与statType一致

    =SWITCH(
        Fields!StatType.Value = "Inspection", "Tan",
        Fields!StatType.Value = "Operational", "Green",
        Fields!StatType.Value = "Repair", "Red",
        True, "Blue"
        )
    

    (如果我们缺少一个类型,蓝色线就在那里,它将显示在图表n蓝色上。)

    这给了我们。。 enter image description here

    希望这能给你足够的时间继续下去。

    推荐文章