计算 2 个单独字段中的条件实例

问题描述 投票:0回答:1

这有点难以解释,但这是查询:

SELECT        rqia_name AS Inspection, SUM((CASE WHEN Filteredrqia_inspection.rqia_inspectorconductingidname = 'External Professional' OR
                         Filteredrqia_inspection.rqia_inspectorconducting2name = 'External Professional' OR
                         Filteredrqia_inspection.rqia_inspectorsupporting1idname = 'External Professional' OR
                         Filteredrqia_inspection.rqia_inspectorsupporting2idname = 'External Professional' THEN 1 ELSE 0 END)) AS ExtProfInvolved
FROM            Filteredrqia_inspection
GROUP BY rqia_name
HAVING        (SUM((CASE WHEN Filteredrqia_inspection.rqia_inspectorconductingidname = 'External Professional' OR
                         Filteredrqia_inspection.rqia_inspectorconducting2name = 'External Professional' OR
                         Filteredrqia_inspection.rqia_inspectorsupporting1idname = 'External Professional' OR
                         Filteredrqia_inspection.rqia_inspectorsupporting2idname = 'External Professional' THEN 1 ELSE 0 END)) > 0)

所以我想要做的是对每次检查中出现外部专业人员的实例进行求和。如果外部专业人员出现在上述任一字段中,我确实得到 SUM 1,但在某些情况下,它可能同时出现在“Filteredrqia_inspection.rqia_inspectorsupporting1idname”和“Filteredrqia_inspection.rqia_inspectorsupporting2idname”中,在这种情况下,我想显示SUM CASE 为 2。但是,即使外部专业人员显示在多个字段中进行检查,SUM CASE 语句仍然返回 1。我怎样才能让它进行正确的计数?预先感谢。

如上所述,但没有成功。

reporting-services sum case
1个回答
0
投票

我认为您可以添加一个 WHEN 子句作为 CASE 中的第一个 WHEN,用于检查两个外部 Pro 并返回 2(如果是),以使其按照您需要的方式工作。

CASE 
    WHEN Filteredrqia_inspection.rqia_inspectorsupporting1idname = 'External Professional' AND Filteredrqia_inspection.rqia_inspectorsupporting2idname = 'External Professional' 
        THEN 2
    WHEN...

这样它会在进行当前检查之前先检查两个匹配项。 CASE 返回 WHEN 语句的第一个匹配项,因此 Dual Pro 将匹配第一个 WHEN 并忽略第二个 WHEN。

© www.soinside.com 2019 - 2024. All rights reserved.