我在SQL Server 2014中遇到此查询时出现以下错误“操作数数据类型varchar对sum运算符无效。”
SUM (DISTINCT (studentsip.AdminNO)) AS NoOfStudentsAllocated
答案 0 :(得分:1)
您的字段属于varchar
类型。要在sum()
中使用它,您需要convert()
到int
:
sum(distinct(convert(int,studentsip.AdminNO))) as NoOfStudentsAllocated
答案 1 :(得分:1)
如果您想计算学生人数(按照列名称建议),请使用COUNT()
,而不是SUM()
:
COUNT(DISTINCT studentsip.AdminNO) AS NoOfStudentsAllocated
我对SQL有一定的经验。我从未使用SUM(DISTINCT)
。我希望语言不允许语法。
我应该注意,如果不需要DISTINCT
,那么你就不应该使用它。 DISTINCT
几乎总是会减慢查询速度。
答案 2 :(得分:0)
如果您想要拥有每个AdminNo值的学生人数,您可以使用计数和分组:
select AdminNO, count(1) as NoOfStudentsAllocated
from studentsip
group by AdminNO
order by AdminNO