2016-04-04 11 views
1

Ich habe dieses Problem, und es schleift wirklich meine Zahnräder, weil ich wirklich keine Lösung finden kann. Ich arbeite in SQL Server Management Studio. Hier , wähle ich verschiedene Daten und den Durchschnitt der anderen Spalte Werte für jede einzelne Daten, wie folgt aus:Außer funktioniert nicht mit eingebetteten SQL-Abfrage

SELECT age, standing 
FROM 
(SELECT DISTINCT standing, avg(age) as age 
FROM student 
group by standing) as s 

Nun, das funktioniert gut. Das Problem tritt auf, wenn ich versuche, dies zu tun:

SELECT age, standing 
FROM 
(SELECT DISTINCT standing, avg(age) as age 
FROM student 
group by standing) as s 

EXCEPT 

SELECT age, standing 
FROM 
(SELECT DISTINCT standing, avg(age) as age 
FROM student 
WHERE standing = 'JR' 
group by standing) as k 

Die select oben AUSSER und unter AUSSER funktioniert gut, aber zusammen sie einfach nicht. Das Programm sagt mir einen Fehler über die Ausnahme: Es gab einen Fehler bei der Analyse der Abfrage. [Token-Zeilennummer = 6, Token-Zeilen-Offset = 1, Token-Fehler = AUSSER]

Ich habe auch UNION, INTERSECT und MINUS versucht. Nur die Gewerkschaft schien zu funktionieren, und im Moment weiß ich wirklich nicht, was hier vor sich geht.

Ich freue mich auf die Lösung und bin auch wirklich interessiert was ich falsch mache.

+0

Welche Version von SQL Server verwenden Sie? – supergrady

+1

Ich benutze Microsoft SQL Server Management Studio 10.50.1600.1 – Dajer

Antwort

0

Versuchen Sie, Datensätze mit 'JR' auszuschließen? Warum dies nicht versuchen:

SELECT age, standing 
FROM 
(SELECT DISTINCT standing, avg(age) as age 
FROM student 
where standing <> 'JR' 
group by standing) as s 
+0

Vielen Dank! :) Es funktioniert genau so, wie ich es wollte. Aber wissen Sie nicht, was dieses Problem mit Ausnahme verursacht? Ich bin nur neugierig darauf. – Dajer

0

Können Sie diese Abfrage ausführen ‚select @@ version‘ und geben die Informationen, die Sie erhalten. Ich habe versucht, eine Abfrage ähnlich wie Sie ist auf meinem "SQL Server 2008" und es funktioniert gut. Auch wenn Sie union, intersect und except verwenden, müssen Sie distinct nicht verwenden. Dies führt jedoch nicht zu Problemen, da sie unterschiedliche Zeilen zurückgeben.

+0

Es funktioniert nicht, es wird ein Fehler ausgegeben, dass der globale Variablenname nicht gültig ist. Wie auch immer, ich benutze Version 10.50.1600.1. – Dajer

Verwandte Themen