2009-12-23 3 views
3

У меня есть переменная 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 
     ) 

Другими словами внутренний выбор является возвращая один столбец. Я хочу, чтобы var был назначен SUM всех строк, которые там возвращаются.

Я понимаю, что это можно сделать с помощью таблицы temp довольно легко. Но так ли это?

ответ

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 

Там нет смысла в использовании GROUP BY jc.JudgingCriteriaID если внешний запрос будет суммировать все равно.

+0

Спасибо. Неплохо подмечено. Группа ушла. –

2
SELECT Sum(CategoryScore) 
FROM (subquery) 
0

Это работает для меня, как это:

select sum(myColumn) from MyTable where MyTableID = 'some value' 

вы также можете сделать это (чтобы сделать его более устойчивым):

select sum(isnull(myColumn,0)) from MyTable where MyTableID = 'some value' 
Смежные вопросы