首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSRS 2005柱状图:当数据计数为零时显示系列标签丢失

SSRS 2005柱状图:当数据计数为零时显示系列标签丢失
EN

Stack Overflow用户
提问于 2013-05-08 02:28:44
回答 2查看 1.3K关注 0票数 0

我有一个非常简单的图表,上面可能有一个常见的问题。我已经在互联网上搜索了几个小时,但只找到了类似的情况。

我所提取的基本内容包含created_by、person_id和风险分数。风险分数可以是:

1极低2低3中等稳定4中等风险5高6很高

我希望获得每个风险分值的人数,并显示风险计数,即使该风险分值的计数为0,但SSRS 2005喜欢抑制零计数。

我在点标签=IIF(IsNothing(count(Fields!person_id.value)),0,计数(字段!person_id.value)中尝试过此方法)

示例:我缺少"1 LOW“的值,因为创建者没有为其分配任何"1 LOW”的风险分数。

*here's a screenshot of what I get but I'd like to have a column even for a count when it still doesn't exist in the returned results.

@Nathan

示例场景:

select professor.name, grades.score, student.person_id from student

inner join grades on student.person_id = grades.person_id

inner join professor on student.professor_id = professor.professor_id

where student.professor_id = @professor

并不是所有的学生都在成绩表中。

我有一个=计数(字段!person_id.Value)的数据点和系列分组在=字段!score.Value上

如果有一堆A、B、D等级,但没有C&F等级,我该如何显示可能不存在的计数的标签

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-10 08:16:58

在您的示例中,问题在于没有链接到任何学生的成绩没有返回任何结果。为了解决这个问题,理想情况下,在源系统中应该有一个表,其中列出了"score“的所有可能值(例如,A- F),您可以将此表连接到您的查询中,以便为每个可能的值至少返回一行。

如果这样的表不存在,并且可能的分数值是已知的和静态的,那么您可以在查询中手动创建它们的列表。在下面的例子中,我创建了一个子查询,返回所有教授和所有可能的分数(A - F)的组合,然后左连接到成绩和学生表(左连接意味着即使在“成绩”表中没有学生有这些分数,也会返回教授/分数行)。

代码语言:javascript
复制
SELECT 
    professor.name
  , professorgrades.score 
  , student.person_id
FROM
(
  SELECT professor_id, score
  FROM professor
  CROSS JOIN
   ( 
     SELECT 'A' AS score
     UNION
     SELECT 'B'
     UNION
     SELECT 'C'
     UNION
     SELECT 'D'
     UNION
     SELECT 'E'
     UNION
     SELECT 'F'
   ) availablegrades
 ) professorgrades
INNER JOIN professor ON professorgrades.professor_id = professor.professor_id
LEFT JOIN grades ON  professorgrades.score = grades.score
LEFT JOIN student ON grades.person_id = student.person_id AND 
              professorgrades.professor_id = student.professor_id

WHERE professorgrades.professor_id = 1

在这里查看它的工作原理的现场示例:SQLFIDDLE

票数 0
EN

Stack Overflow用户

发布于 2013-05-08 13:46:06

代码语言:javascript
复制
SELECT RS.RiskScoreId, RS.Description, SUM(DT.RiskCount) AS RiskCount
FROM (
    SELECT RiskScoreId, 1 AS RiskCount
    FROM People
    UNION ALL
    SELECT RiskScoreId, 0 AS RiskCount
    FROM RiskScores
) DT
INNER JOIN RiskScores RS ON RS.RiskScoreId = DT.RiskScoreId
GROUP BY RS.RiskScoreId, RS.Description
ORDER BY RS.RiskScoreId
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16426053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档