2016-06-13 10 views
0

Ich versuche, ausgewählte Daten aus einer meiner Tabellen in meiner Datenbank zu drucken. Ich kann das erfolgreich machen, aber ich muss das dann nach Alter und absteigender Reihenfolge gruppieren. Aber ich habe keine Ahnung, wie ich das nur mit dem Geburtsdatum machen soll. Jede Hilfe wird geschätzt und meine SQL wird unten angezeigt.SQL - GROUP BY Alter in absteigender Reihenfolge mit dem Geburtsdatum

SELECT pet_id, Name, Type, Breed, Born 
FROM pet 
WHERE Born 
BETWEEN '1999' AND '2001' 
GROUP BY 

Bitte zögern Sie nicht, Fragen zu stellen. Ich habe noch nichts probiert, da ich leider nicht weiß, wo ich anfangen soll.

Antwort

3

Ich denke, Sie möchten ORDER BY Alter eher als GROUP BY. Sie haben keine Aggregationsfunktionen, die eine Gruppierung vorschlagen.

So:

SELECT pet_id, Name, Type, Breed, Born 
FROM pet 
WHERE Born BETWEEN '1999' AND '2001' 
ORDER BY Born ASC; 
+0

Leider habe ich meine Internetverbindung verloren und bin gerade erst wieder online gegangen. Die Antwort, die Sie angegeben haben, wird nicht nach Alter sortiert. Es sortiert nach Geburtsdatum absteigend. In der Realität wäre also das absteigende Alter zuerst das Älteste, während sich die Antwort nach dem jüngsten absteigend nach dem ältesten unterscheidet. Ich sehe Ihren Punkt über ORDER BY statt GROUP BY, aber ich suche leider immer noch nach der Antwort. – DAN212

0

Wenn die tatsächliche Alter in Jahren in der Abfrage wichtige Ausgabe ist, diese Frage und Antwort kann helfen Alter berechnen Geburtsort und das aktuelle Datum mit Datum: How to calculate age (in years) based on Date of Birth and getDate()

basierend auf Ihre erste Abfrage und was Sie für Daten anfordern, sehe ich keine Notwendigkeit für eine Gruppe durch nur eine Bestellung von

SELECT pet_id, Name, [Type], Breed, Born, 
DATEDIFF(hour, Born, GETDATE())/8766 as 'Age' 
FROM pet 
WHERE Born 
BETWEEN '1999' AND '2001' 
ORDER BY DATEDIFF(hour, Born, GETDATE())/8766 DESC 
+0

Hallo, ich habe es versucht, aber ich bekomme immer einen Fehler. Ich habe auch auf MS-Zugang umgeschaltet, also nicht verklagen, wenn es verwandt ist. Hier ist der Fehler, den ich erhalte: "Die SELECT-Anweisung enthält einen reservierten Wort- oder Argumentnamen, der falsch geschrieben ist oder fehlt, oder die Interpunktion ist falsch". Nochmals vielen Dank für Ihre kontinuierliche Hilfe. – DAN212

+0

Ich habe die Abfrage ein wenig bearbeitet. Meine Vermutung ist, dass der Fehler um den Spaltennamen "Type" herum zentriert ist, das in Klammern eingeschlossen sollte das Problem beheben. – mfreedm52

+0

Danke, das scheint diesen Teil behoben zu haben, aber jetzt gibt es einen neuen Fehler. Undefinierte Funktion 'GETDATE' in Ausdruck. – DAN212

0

Wenn Sie versuchen g dieser SQL-Skript in MS Access laufen so etwas wie dies versucht:

SELECT pet_id, Name, Type, Breed, Born 
FROM pet 
WHERE Born BETWEEN '1999' AND '2001' 
ORDER BY DateDiff("yyyy",DateSerial([Born],1,1),DateSerial(Year(Date()),1,1)) DESC; 

Ich gehe davon aus, dass der ‚Born‘ Feld nicht wirklich ein Datum Feldtyp, sondern eine Anzahl Typen oder Texttyp.