如何对返回多行的选择结果求和

Set*_*man 5 sql t-sql sql-server

我有一个 SQL 变量 @SumScore dec(9,4)

我正在尝试按如下方式分配变量:

SET @SumScore =   
        (  
            SELECT Sum(  
                (  
                    SELECT SUM(etjs.CalculatedScore * sc.PercentOfTotal) as CategoryScore   
                    FROM tblEventTurnJudgeScores etjs 
                        INNER JOIN tblJudgingCriteria jc ON  jc.JudgingCriteriaID = etjs.JudgingCriteriaID  
                        INNER JOIN tblScoringCategories sc ON jc.ScoringCategoryID = sc.ScoringCategoryID  
                    GROUP BY jc.JudgingCriteriaID  
                ) 
            As ComputedScore) AS SumTotalScore  
        )  
Run Code Online (Sandbox Code Playgroud)

换句话说,内部选择返回一列。我希望为 var 分配正在返回的所有行的 SUM。

我意识到这可以很容易地用临时表来完成。但这是唯一的方法吗?

Tor*_*amo 7

SELECT Sum(CategoryScore)
FROM ( subquery )
Run Code Online (Sandbox Code Playgroud)


OMG*_*ies 1

使用:

SET @SumScore = SELECT SUM(etjs.CalculatedScore * sc.PercentOfTotal) as CategoryScore   
                  FROM tblEventTurnJudgeScores etjs 
                  JOIN tblJudgingCriteria jc ON  jc.JudgingCriteriaID = etjs.JudgingCriteriaID  
                  JOIN tblScoringCategories sc ON jc.ScoringCategoryID = sc.ScoringCategoryID 
Run Code Online (Sandbox Code Playgroud)

GROUP BY jc.JudgingCriteriaID如果外部查询无论如何都要总结所有内容,那么使用它就没有意义。