0

我有一个非常简单的图表,其中可能存在一个常见问题。我在互联网上搜索了几个小时,但到目前为止只找到了类似的情况。

我要提取的基础知识包含 created_by、person_id 和风险评分,风险评分可以是:

1 非常低 2 低 3 中等 稳定 4 中等风险 5 高 6 非常高

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

我已经在点标签 =IIF(IsNothing(count(Fields!person_id.value)),0,count(Fields!person_id.value)) 中尝试过这个

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

*这是我得到的截图,但我想有一列即使在返回的结果中仍然不存在时也可以计数。

@内森

示例场景:

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

并非所有学生都必须在成绩表中。

我有一个 =Count(Fields!person_id.Value) 用于我的数据点和系列分组在 =Fields!score.Value

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

4

2 回答 2

0
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
于 2013-05-08T05:46:05.877 回答
0

在您的示例中,问题是没有返回未链接到任何学生的成绩的结果。为了理想地解决这个问题,您的源系统中将有一个表,其中列出了“分数”的所有可能值(例如 A - F),您可以将其加入到您的查询中,以便为每个可能的值返回至少一行。

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

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

于 2013-05-10T00:16:57.873 回答