How do I sum the results of a select that returns multiple rows
I have a SQL variable @SumScore dec(9,4)
I am trying to assign the variable as follows:
SET @SumScore =
(
SELECT Sum(
(
SELECT SUM(etjs.CalculatedScore * sc.PercentOfTotal) as CategoryScore
FROM tblEventTurnJudgeScores etjs
INNER JOIN tblJudgingCri开发者_JAVA百科teria jc ON jc.JudgingCriteriaID = etjs.JudgingCriteriaID
INNER JOIN tblScoringCategories sc ON jc.ScoringCategoryID = sc.ScoringCategoryID
GROUP BY jc.JudgingCriteriaID
)
As ComputedScore) AS SumTotalScore
)
In other words the inner select is returning one column. I want the var to be assigned the SUM of all of the rows that are being return there.
I realize that this could be done with a temp table pretty easily. But is that the only way?
SELECT Sum(CategoryScore)
FROM ( subquery )
Use:
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
There's no point to using GROUP BY jc.JudgingCriteriaID
if the outer query is going to sum up everything anyway.
This worked for me like this:
select sum(myColumn) from MyTable where MyTableID = 'some value'
you could also do this (to make it more robust):
select sum(isnull(myColumn,0)) from MyTable where MyTableID = 'some value'
精彩评论