Subquery mit Group By - Oracle Sql

Webdesigner

Benutzer
Beiträge
10
Hallo,

wenn ich folgenden SQL-Statement ausführe, funktioniert mein Ergebnis.

Select * FROM (Select b.p,(Select "Std" FROM testView a WHERE a.p=b.p AND rownum<=1) as "Std" FROM testView b GROUP BY b.p)o,LVA u

Wenn ich nun den Statement

Select * FROM (Select b.p,(Select "Std" FROM testView a WHERE a.p=b.p AND rownum<=1) as "Std" FROM testView b GROUP BY b.p)o,LVA u WHERE o.p=u.p

ausführe bekomme ich die Fehlermeldung:

ORA-00979: Kein GROUP BY-Ausdruck

Woran könnte das liegen? Wie kann das Problem beseitigt werden?
 
Werbung:
warum müssen alle Spalten im Resultat aggregiert/gruppiert sein?

weil alles andere keinen Sinn ergibt. Alles andere ist schlicht logisch falsch. Du kannst auf MySQL umsteigen, das erlaubt das (noch). Das Resultat ist dann halt nicht vorhersagbar und daher eher falsch, aber es kommt keine Fehlermeldung. Wähle also zwischen logisch und inhaltlich richtig oder Bullshit.

Code:
test=*# create table xyz(a int, b int);
CREATE TABLE
test=*# insert into xyz values (1,10);
INSERT 0 1
test=*# insert into xyz values (2,20);
INSERT 0 1
test=*# select a, sum(b) from xyz;

Was *exakt* erwartest Du jetzt in der Spalte a? 'b' ist rivial, 30. Aber soll in a nun 1 oder 2 stehen?

Code:
test=*# select a, sum(b) from xyz;
FEHLER:  Spalte »xyz.a« muss in der GROUP-BY-Klausel erscheinen oder in einer Aggregatfunktion verwendet werden
ZEILE 1: select a, sum(b) from xyz;
  ^
test=*#
 
Hallo.
vielen Dank für Ihre Mühe. Nun habe ich es verstanden. Mein SQL-Statement ohne der WHERE - Klausel funktioniert schon, also müssen alle Spalten aggregiert sein. Beim Hinzufügen der WHERE Klausel passiert der Fehler. Haben Sie eine Vermutung, woran das liegen könnte?
vielen Dank.
 
Werbung:
Zurück
Oben