2017-03-22 18 views
1

Können Sie mir sagen, was ist los mit dieser Abfrage?CASE WHEN LIKE Abfrage SQL

SELECT Students.Class 
FROM Students 
GROUP BY Students.class 
HAVING SUM(CASE WHEN Name LIKE '*a' THEN 1 ELSE 0 END) > COUNT(*)/2;  

Ich habe zu prüfen, ob der Name mit dem Buchstaben endet ‚a‘ und dann vergleichen, wenn Menge dieses Namen in jeder Klasse höher als die Hälfte aller Schüler in diesen Klassen ist.

+2

Welche Fehler Sie erhalten? – Rahul

+0

Sorry, ich habe es vergessen. Es besagt, dass in der Zeile der letzten Abfrage ein Syntaxfehler (kein Operator) vorhanden ist. – botq

Antwort

0

MS Access unterstützt case nicht.

SELECT Students.Class 
FROM Students 
GROUP BY Students.class 
HAVING SUM(IIF(Name LIKE '*a', 1, 0)) > COUNT(*)/2; 
+0

Das ist es. Ich danke dir sehr! Es funktionierte. – botq

1

Ich nehme an, Sie nur Klassen angezeigt haben:

Select Class 
From Students 
Where Name Like '*a' 
Group by Class 
Having SUM(*) > (Select COUNT(*)/2 
       From Students) 
+0

Ms-access sagt, dass es in dieser Abfrage einen Syntaxfehler gibt. – botq

+0

Es ist logisch korrekt Abfrage, der Syntaxfehler ist etwas Kleines, das ich nicht durch nur betrachten kann. Ich muss es im Compiler überprüfen. Was ist der Fehler, den Sie bekommen? –

+0

Es informiert nur über einen Syntaxfehler in der Abfrage 'SUM (*)> SELECT COUNT (*)/2 FROM Studenten'. – botq