2013-09-08 5 views
0

Как суммировать данные подзапросов в SQL Server 2008?Как суммировать данные подзапросов в SQL Server 2008?

В этом запросе я хочу суммировать данные этого Score данных в этой функции CASE, где точка между номером числа, достаточное время. Я пытаюсь суммировать этот столбец, он показывает мне ошибку.

Теперь я хочу суммировать эту колонку Score с Group by Applicant id, как я могу суммировать данные столбца Score вместе?

Но я не могу сделать этот запрос. пожалуйста, помогите мне, здесь я новичок.

SELECT 
    ApplicantId, point, 
    'Score' = CASE 
       WHEN point BETWEEN 4.00 AND 4.50 THEN ('3') 
       WHEN point BETWEEN 3.5 AND 4.00 THEN ('2') 
       END 
FROM tblAcademicInfo 
WHERE tblAcademicInfo.ApplicantId = tblAcademicInfo.ApplicantId 

Выход:

ApplicantId point Score 
-------------------------------- 
    xzc1 3.25 NULL 
    xzc1 4.36 3 
    xzc1 3.59 2 
    xzc1 4.00 3 
+0

Я ответил на ваш вопрос, но я не думаю, что это именно то, что вы ищете что делать, какую ошибку вы получаете, чего вы пытаетесь достичь? – ermagana

ответ

1

Есть несколько проблем

  1. Ваш пункт WHERE не имеет смысла
  2. просуммировать баллы за заявителем использования SUM() и GROUP BY п
  3. Чтобы иметь возможность суммировать значения, которые вы должны возвращать числовые значения в CASE вместо строковых литералов
  4. В запросе вы есть point столбец в вашем избранном. Но это не часть GROUP BY, потому что вы хотите сгруппировать по applicantid. Поэтому вы должны либо применить агрегатную функцию к этому столбцу (например, также SUM()), либо удалить его из набора результатов.

Попробуйте

SELECT ApplicantId, 
     SUM(CASE WHEN point BETWEEN 4.0 AND 4.5 THEN 3 
       WHEN point BETWEEN 3.5 AND 4.0 THEN 2 
     END) Score 
    FROM tblAcademicInfo 
GROUP BY ApplicantId 

Выход:

 
| APPLICANTID | SCORE | 
|-------------|-------| 
|  xzc1 |  8 | 

Вот SQLFiddle демо

+0

Мне нужна только сумма баллов –

+0

Ok. Что вы хотите делать с «точкой»? Вы не нуждаетесь в этом в наборе результатов, верно? См. Обновленный ответ. – peterm

+0

показывает эту ошибку. Тип данных операнда varchar недействителен для оператора суммы. –

0

Вы пробовали следующее:

SELECT ApplicantId,point, 
    SUM(CASE 
WHEN point BETWEEN 4.00 AND 4.50 THEN 3 
WHEN point BETWEEN 3.5 AND 4.00 THEN 2 
END 
) [Score] 
FROM tblAcademicInfo 
WHERE tblAcademicInfo.ApplicantId 
GROUP BY ApplicantId, point 
+0

показывает эту ошибку Msg 8117, уровень 16, состояние 1, строка 3 Тип оператора данных varchar недействителен для оператора сумм. –

0

попробовать это

SELECT ApplicationId,Point,sum(Case When score IS Null Then 0 else score END) as SumScore 
FROM tblAcademicInfo 
GroupBy Applicatio0nId,Point,score 
+0

Yeaa это помогло мне .... Thanx mate –

Смежные вопросы