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 年的出勤率。
当一个系列的报告为 运行 时,日期期间由报告参数动态确定,而另一个系列则由根据报告参数计算的变量动态确定。
在我定义的折线图中:
- 值 是出勤率
- 类别组 是 Event_Date(过滤到 2017 年的 select 事件)
- 系列组是Event_Date(过滤到2016年的select事件)
问题
当我 运行 报告时,图表呈现但没有数据(线)。
如果我删除系列组(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 分配给类别组,年 到系列组。我还添加了一个显示事件日期的工具提示,以便您可以将鼠标悬停在任意点上并显示事件日期。
使用 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 年的出勤率。
当一个系列的报告为 运行 时,日期期间由报告参数动态确定,而另一个系列则由根据报告参数计算的变量动态确定。
在我定义的折线图中:
- 值 是出勤率
- 类别组 是 Event_Date(过滤到 2017 年的 select 事件)
- 系列组是Event_Date(过滤到2016年的select事件)
问题
当我 运行 报告时,图表呈现但没有数据(线)。
如果我删除系列组(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 分配给类别组,年 到系列组。我还添加了一个显示事件日期的工具提示,以便您可以将鼠标悬停在任意点上并显示事件日期。