当类别没有x值时,如何让y轴类别标签出现在条形图中?

时间:2017-02-16 16:41:04

标签: visual-studio reporting-services visual-studio-2015 reporting

我的报告中有一个条形图,在x轴上反映了属于某个类别的所有答案的百分比,而在y轴上则反映了类别:

enter image description here

还有两个类别未在y轴上显示:“弱”和“非常弱”,每个类别都收到零答案,因此具有0%的值。

但我仍然需要这两个类别出现在y轴上,并且无法实现这一点。

编辑@ R.Richards的请求:

通过从此查询中提取数据来创建图表:

SELECT multiple_choice FROM mytable

...其中multiple_choice是一个值介于1和5之间的字段。

图表类别为multiple_choice,值基于表达式

=Count(Fields!multiple_choice.Value) / Count(Fields!multiple_choice.Value, "ChartName")

在@iamdave发表评论后进一步编辑:

由于数据集中根本没有选择“非常弱”和“弱”类别的值,因此类别出现的唯一位置是标签 - 使用表达式创建:

=iif(Fields!multiple_choice.Value = 1, "Very weak",
 iif(Fields!multiple_choice.Value = 2, "Weak",
 iif(Fields!multiple_choice.Value = 3, "Somewhere in the middle",
 iif(Fields!multiple_choice.Value = 4, "Strong", 
 iif(Fields!multiple_choice.Value = 5, "Very strong", "")))))

1 个答案:

答案 0 :(得分:1)

图表只能显示要从数据集中显示数据的类别。如果您的数据库中不存在答案类别,则需要在适当的时候使用union all值将0硬编码到数据集中。

首选解决方案 - 假设您的数据库 包含所有可能答案的列表 - 将以首先返回所有可能答案然后聚合它们的方式编写查询,而不是直接回答给定的答案,因为您的数据集现在似乎在做。

假设表结构为:

  • 问卷
    • 其中包含有关特定问卷的所有详细信息。
  • 问题
    • 其中包含每个问卷的所有问题。
  • QuestionAnswers
    • 其中包含每个问题的所有可能答案。
  • 答案
    • 其中包含已选择的每个答案的记录。
select q.QuestionnaireName
      ,qu.QuestionName
      ,qa.QuestionAnswer
      ,count(a.Answer) as Responses

from Questionnaires q
    inner join Questions qu
        on q.QuestionnaireID = qu.QuestionnaireID
    inner join QuestionAnswers qa
        on qu.QuestionID = qa.QuestionID
    left join Answers a
        on qa.QuestionAnswerID = a.QuestionAnswerID

where q.QuestionnaireID = @YourReportParameter

group by q.QuestionnaireName
        ,qu.QuestionName
        ,qa.QuestionAnswer

对于给定的调查问卷,此查询将输出每个可能的问题,每个可能的答案以及选择答案的次数。显然这不符合自由文本或数字响应,但我确信如果需要,你可以解决这个问题。