2016-10-20 3 views
-5

Ich habe den folgenden Fehler mit dieser Abfrage in SQL Server 2014 "Operand Datentyp Varchar ist ungültig für Summenoperator."SQL Server-Abfrage ist ungültig

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

Sieht ziemlich klar? Sie versuchen, die Summe einer Spalte von Zeichenfolgen zu erhalten ... – Ivar

+1

COUNT anstelle von SUM? – dean

+0

Was möchten Sie tun? Überprüfen Sie den Datentyp von AdminNO @Weeliang Koh –

Antwort

1

Wenn Sie die Anzahl der Schüler zählen möchten (wie sie in der Spalte Name schon sagt), dann verwenden Sie COUNT(), nicht SUM():

COUNT(DISTINCT studentsip.AdminNO) AS NoOfStudentsAllocated 

Ich habe eine gewisse Erfahrung mit SQL. Ich habe nie SUM(DISTINCT) verwendet. Ich wünschte, die Sprache erlaubte die Syntax nicht.

Ich sollte beachten, dass wenn Sie die DISTINCT nicht benötigt wird, sollten Sie es nicht verwenden. DISTINCT verlangsamt fast immer Abfragen.

1

Ihr Feld ist vom Typ varchar. Um es zu nutzen in sum() Sie es intconvert() brauchen:

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

Wenn Sie die Anzahl der Schüler wollen, dass jeder Wert von AdminNo haben, können Sie Zählung und Gruppe von verwenden:

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