2 Stimmen

Fehler in SQL-Abfrage mit GROUP BY erhalten

Ich versuche, eine SQL-Abfrage (mssql 2005) wie folgt auszuführen:

select top 20 d_date, date1, date2 
from reestr_calculated 
where reestr_id=2 
group by date2 
order by date2 desc

und ich erhalte den folgenden Fehler:

Spalte 'reestr_calculated.d_date' ist ungültig in der SELECT-Liste, da sie weder in einer Aggregatfunktion noch in der GROUP-BY-Klausel enthalten ist.

Weiß jemand, wie ich mit diesem Fehler umgehen kann?

3voto

Darshan Mehta Punkte 30052

Alle Spaltennamen, die in SELECT vorhanden sind, müssen auch in GROUP BY vorhanden sein, es sei denn, Sie verwenden Aggregatfunktionen. Fügen Sie daher auch date1 in die Gruppierung hinzu.

0voto

fancyPants Punkte 49011

Wenn Sie GROUP BY verwenden, werden mehrere Zeilen zu einer Zeile "zusammengefasst". Um zu bestimmen, welche dieser Zeilen in einer Gruppe angezeigt werden sollen, müssen Sie eine Aggregatfunktion verwenden.

Wie z.B. MIN() oder SUM() oder andere.

So wie hier:

select top 20 MIN(d_date), MAX(date1), date2 
from reestr_calculated 
where reestr_id=2 
group by date2 
order by date2 desc

oder so wie hier:

select top 20 d_date, date1, date2 
from reestr_calculated 
where reestr_id=2 
group by d_date, date1, date2 
order by date2 desc

0voto

Jaloopa Punkte 722

Sie gruppieren nach date2, was bedeutet, dass für jeden date2-Wert eine Zeile zurückgegeben wird. Jeder date2-Wert könnte mehrere d_date oder date1-Werte haben, daher weiß SQL nicht, welche Werte für jeden zurückgegeben werden sollen.

Wie der Fehler besagt, benötigen Sie entweder eine Aggregatfunktion (MAX(), MIN(), AVG() usw.) oder müssen die anderen Spalten in die GROUP BY-Klausel aufnehmen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X