2016-10-20 7 views
-5

У меня возникла следующая ошибка с этим запросом в SQL Server 2014 «Тип данных операнда varchar недействителен для оператора сумм».Ошибка SQL Server Query

SUM (DISTINCT (studentsip.AdminNO)) AS NoOfStudentsAllocated 
+3

Выглядит довольно ясно? Вы пытаетесь получить сумму столбца строк ... – Ivar

+1

COUNT вместо SUM? – dean

+0

что вы пытаетесь сделать? проверьте тип данных AdminNO @Weeliang Koh –

ответ

1

Если вы хотите, чтобы подсчитать количество студентов (как предложено по имени столбца), а затем использовать COUNT(), не SUM():

COUNT(DISTINCT studentsip.AdminNO) AS NoOfStudentsAllocated 

У меня есть определенный опыт работы с SQL. Я никогда не использовал SUM(DISTINCT). Я хочу, чтобы язык не позволял синтаксис.

Следует отметить, что если DISTINCT не требуется, вы не должны его использовать. DISTINCT почти всегда замедляет запросы.

1

Ваше поле относится к модели varchar. Для того, чтобы использовать его в sum() вам нужно convert() его int:

sum(distinct(convert(int,studentsip.AdminNO))) as NoOfStudentsAllocated 
0

Если вы хотите, количество студентов, имеющих каждое значение AdminNo, вы можете использовать количество и группу по:

select AdminNO, count(1) as NoOfStudentsAllocated 
from studentsip 
group by AdminNO 
order by AdminNO