我有一个调查,涉及3个问题,回答为1到5。我的数据集包含每个问题Q1,Q2和Q3的字段。在我的SSRS报告中,我想在一个柱形图上显示调查结果,其中x轴的数字为1到5,沿该轴的每个数字显示3列,每个问题/字段1个,计算出该评分的回复。
我不是SSRS专家,但是我通常可以让它做我想做的事情。这似乎很容易,但是我遇到了很多麻烦。我已经做了很多搜索,但似乎找不到解决方法。
我可以使用以下配置来绘制单个调查问题: 值:count(Q1); 类别组:Q1
我不知道在哪里添加其他问题,以便与相同的x轴值相比它们以新列的形式出现。我尝试过的所有结果都会评估每个答案组合彼此之间的结果。我想独立显示每个问题的结果。
我最终希望得到3个值:count(Q1),count(Q2)和count(Q3),以及一个包含数字1-5的单一类别组。
我想也许我需要创建一个表数组作为变量,并将其数字1-5用作我的类别组。如果是这种情况,我也不知道该怎么做。
或者我可能会把所有这些都弄错了。我正在做的事情会自动关联值吗?本质上,我想要的是在同一图表轴上显示3个独立图形。这可能吗?
答案 0 :(得分:0)
如果您想要3个独立的图用于三个独立的图,则可以这样做。这可能会有点长,但是我为您的问题提供了2个案例。我为SSRS报告创建了此表,然后在报告中使用了该表。我假设每个字段都被填充(每次1-5)(方案1)。如果没有,我在下面提供了另一种解决方案(方案2)。
方案1:
表创建:
Create table ssrsQuestion (Question varchar(250), Ratings int, Numberofpeople int)
insert into ssrsQuestion values ('Q1', 1, 5) ,
('Q1', 2, 30) ,
('Q1', 3, 40) ,
('Q1', 4, 56) ,
('Q1', 5, 100) ,
('Q2', 1, 15) ,
('Q2', 2, 30) ,
('Q2', 3, 50) ,
('Q2', 4, 80) ,
('Q2', 5, 120) ,
('Q3', 1, 10) ,
('Q3', 2, 20) ,
('Q3', 3, 30) ,
('Q3', 4, 40) ,
('Q3', 5, 50)
然后,您可以在SSRS报告中使用此查询。我用过总和,可能您可能必须使用计数。
select Question, ratings, sum(Numberofpeople) totalnumbers from ssrsQuestion
group by Question, ratings
order by Question, Ratings;
之后,您可以通过这种方式向图形添加值。由于您需要3张图,因此右键单击“图表”属性,然后为每个问题添加过滤器。
您的输出将通过这种方式针对每个问题进行过滤。
方案2:
如果可能并非一直都在填充您的评分字段。您可以使用它每次显示1-5。
创建用于保存评分和问题的表,然后将其加入原始表。首先让我们从原始表中删除记录。
delete from ssrsQuestion
where Question in ('Q3', 'Q2') and Ratings in (1,3)
为评级和问题创建一个静态值表。
create table ratings (ratings int) insert into ratings select 1 union select 2 union
select 3 union Select 4 union select 5
create table Questions (Question varchar(250)) insert into Questions select 'Q1'
union Select 'Q2' union select 'Q3'
然后在SSRS中使用此查询,它将提供您没有记录的记录,也没有人员响应的记录。
select q.Question, r.ratings, sum(Numberofpeople) totalnumbers from Questions q
cross join ratings r
left join ssrsQuestion sr on sr.question = q.question and r.ratings = sr.ratings
group by q.Question, r.ratings
order by q.Question, r.ratings
然后刷新字段,您的SSRS报告图将如下所示(即使没有数据显示该字段,我们也可以看到问题2和3)
答案 1 :(得分:0)
我会用SQL进行工作并将简单的结果传递到图表中。
我重新创建了您的样本数据(或更少),然后使用UNPIVOT将结果放到一个更好的结构中,以供图表使用。
这是我用来重新创建和转换示例数据的T-SQL ...
DECLARE @t TABLE(ResponseID int, Q1 int, Q2 int, Q3 int)
INSERT INTO @t VALUES
(1,2,2,2), (2,5,5,5), (3,1,5,3), (4,4,2,5), (5,4,3,4),
(6,5,4,4), (7,2,2,5), (8,3,2,1), (9,1,5,2), (10,3,1,4),
(11,3,1,1), (12,4,4,2), (13,2,4,4), (14,1,1,5), (15,2,4,2),
(16,4,4,4), (17,5,1,3), (18,2,2,1), (19,5,2,1), (20,4,2,5),
(21,2,3,2), (22,1,5,3), (23,5,1,1), (24,4,1,1), (25,2,3,2),
(26,3,5,1)
SELECT Question, Score, COUNT(*) AS ScoreCount
FROM
(
SELECT ResponseID, Question, Score
FROM
(SELECT ResponseID, Q1, Q2, Q3 FROM @t) p
UNPIVOT
(Score FOR Question IN (Q1, Q2, Q3)
) AS unpvt
) q
GROUP BY Question, Score
ORDER BY Question, Score
这给我们以下结果。
Question Score ScoreCount
Q1 1 4
Q1 2 7
Q1 3 4
Q1 4 6
Q1 5 5
Q2 1 6
Q2 2 7
Q2 3 3
Q2 4 5
Q2 5 5
Q3 1 7
Q3 2 6
Q3 3 3
Q3 4 5
Q3 5 5
然后,我刚刚添加了一个简单的柱形图,将ScoreCount
拖至值,将Score
拖至类别组,并将Question
拖至系列组。
设计看起来像这样。
最终的输出看起来像这样...