SSRS 2016 - 折线图不会绘制多个系列

SSRS 2016 - Line Graph will not chart multiple series

使用 SSRS 2016 和 SQL 2017 报表生成器

我有一个如下所示的数据集。它有活动日期和出席人数:

    Event_Date  Attendance
    1/1/2016    1
    2/1/2016    2
    3/1/2016    3
    4/1/2016    4
    5/1/2016    5
    6/1/2016    6
    7/1/2016    7
    8/1/2016    8
    9/1/2016    9
    10/1/2016   10
    11/1/2016   11
    12/1/2016   12
    1/1/2017    5
    2/1/2017    6
    3/1/2017    7
    4/1/2017    8
    5/1/2017    9
    6/1/2017    10
    7/1/2017    11
    8/1/2017    12
    9/1/2017    13
    10/1/2017   14
    11/1/2017   15
    12/1/2017   16

我正在尝试在 SSRS 报告中创建折线图,其中系列中的每个元素都有一个数据点(出勤率)。我指定两个系列——系列 1 是 2016 年的出席人数,系列 2 是 2017 年的出席人数。每个系列将在图表中单独一行。目的是直观地比较 2016 年和 2017 年的出勤率。

当一个系列的报告为 运行 时,日期期间由报告参数动态确定,而另一个系列则由根据报告参数计算的变量动态确定。

在我定义的折线图中:

问题

当我 运行 报告时,图表呈现但没有数据(线)。

如果我删除系列组(2016 年的事件),图表将正确呈现,只有 2017 年的数据线。

我已经为此工作了很长一段时间,但我无法弄清楚发生了什么。

有没有人知道为什么两个系列都没有绘制成图表以及如何解决它?

非常感谢!

注意:解决方法很简单,不要被回复的长度拖延! :)

您需要对数据集查询进行一些简单的更改..

这是我用来复制数据的示例查询。

DECLARE @t TABLE (Event_Date date, Attendance int)

INSERT INTO @t
VALUES 
('1/1/2016', 1),
('2/1/2016', 2),
    ('3/1/2016', 3),
    ('4/1/2016', 4),
    ('5/1/2016', 5),
    ('6/1/2016', 6),
    ('7/1/2016', 7),
    ('8/1/2016', 8),
    ('9/1/2016', 9),
    ('10/1/2016', 10),
    ('11/1/2016', 11),
    ('12/1/2016', 12),
    ('1/1/2017', 5),
    ('2/1/2017', 6),
    ('3/1/2017', 7),
    ('4/1/2017', 8),
    ('5/1/2017', 9),
    ('6/1/2017', 10),
    ('7/1/2017', 11),
    ('8/1/2017', 12),
    ('9/1/2017', 13),
    ('10/1/2017', 14),
    ('11/1/2017', 15),
    ('12/1/2017', 16)

select Event_Date, format(Event_Date, 'dd/MM') as DayMonth,  year(Event_date) as Yr, Attendance from @t

请注意,在最后的 select(您实际需要的位)中,我添加了一个年份列 Yr 和一个 day/month 列 DayMonth。对于你的数据集,即使你按年份拆分,x 轴仍然代表日期,所以你的两条线将彼此相邻,而不是一条在另一条之上,这是我期望你想要的...... ..

数据集的结果给了我们类似...

Event_Date   DayMonth   Yr     Attendance
2016-01-01   01/01      2016   1
2016-02-01   02/01      2016   2
.....
.....
2017-01-01   01/01      2017   5
.....
.....

等等..

现在,添加一个新的折线图并将 Attendance 放入值; DayMonth 进入类别组,Yr 进入系列组。

您的图表设计应如下所示...

就是这样!

当我们 运行 报告时,我们得到这个...

非常感谢您的帮助。它把我推向了正确的方向,这样我就可以让事情适应这种情况。

我对查询进行了一些更改,以便我可以按年度事件编号将所有数据相互对齐。

这里是查询:

    select
        ROW_NUMBER() over (PARTITION BY year([dbo].[#temp_table_4].[event_start_date]) ORDER BY [dbo].[#temp_table_4].[event_start_date]) as yearly_event_number
        ,format ([dbo].[#temp_table_4].[event_start_date],'d') as event_start_date
        ,format([dbo].[#temp_table_4].[event_start_date],'MM/dd') as MonthDay
        ,year([dbo].[#temp_table_4].[event_start_date]) as Year
        , Count (*) as [Total Attended]
    from 
        [dbo].[#temp_table_4]

    Group by [event_start_date]

    order by 
            [dbo].[#temp_table_4].[event_start_date]

主要变化是我需要对每年发生的每个事件进行编号,从 1 开始到 'n' 结束(当年的最后一个事件)。我需要这样做,因为事件不会在每年的同一日期发生(它们实际上发生在每周三,而不是每年的同一日期)。

为了解决这个问题,我添加了以下 SQL 子句:

ROW_NUMBER() over (PARTITION BY year([dbo].[#temp_table_4].[event_start_date]) ORDER BY [dbo].[#temp_table_4].[event_start_date]) as yearly_event_number

在图表中,我将 Total_Attendance 分配给值,yearly_event_number 分配给类别组, 到系列组。我还添加了一个显示事件日期的工具提示,以便您可以将鼠标悬停在任意点上并显示事件日期。