Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Größter Datumswert in SQL Abfrage

Frage Entwicklung Datenbanken

Mitglied: BadFsaadKl

BadFsaadKl (Level 1) - Jetzt verbinden

14.01.2014, aktualisiert 21:51 Uhr, 3662 Aufrufe, 9 Kommentare, 1 Danke

Moin zusammen,

ich glaub ich hab nen kleinen Hänger.

Habe eine kleine SQL (Oracle) Abfrage, welche mir 2 Ergebnisse zurück gibt.

01.
SELECT 
02.
  a.ab_datum, 
03.
  a.f_bez, 
04.
  a.herst, 
05.
  a.typ, 
06.
  a.ser_nr 
07.
FROM 
08.
  osq01_abflug a, 
09.
  osq01_flug b 
10.
WHERE 
11.
  a.f_bez = b.f_bez AND 
12.
  b.s_ort = 'Luxemburg' AND 
13.
  b.z_ort = 'Ankara' AND 
14.
  a.ab_datum BETWEEN '10.11.2006' AND '20.11.2006'
Ergebnis:
01.
15.11.06	LH-421         	Boeing         	B777      	xv56-3142       
02.
17.11.06	LH-421         	Boeing         	B777      	xv23-0889      
Ich möchte als Ausgabe jedoch nur den Eintrag, mit dem Höchsten/Größten Datum. Sprich die Werte vom 17.11.06
Wenn ich im SELECT Bereich das Datum mit MAX auswähle, erhalte ich folgenden Fehler:
01.
SELECT 
02.
  MAX(a.ab_datum), 
03.
  a.f_bez, 
04.
  a.herst, 
05.
  a.typ, 
06.
  a.ser_nr 
07.
FROM 
08.
  osq01_abflug a, 
09.
  osq01_flug b 
10.
WHERE 
11.
  a.f_bez = b.f_bez AND 
12.
  b.s_ort = 'Luxemburg' AND 
13.
  b.z_ort = 'Ankara' AND 
14.
  a.ab_datum BETWEEN '10.11.2006' AND '20.11.2006'
01.
ORA-00937: not a single-group group function 
02.
00937. 00000 -  "not a single-group group function" 
03.
*Cause:     
04.
*Action: 
05.
Fehler in Zeile: 3 Spalte: 3
Ich steh momentan Total auf dem Schlauch, was ich hier Gruppieren muss, damit das funktioniert.

Habt Ihr ne Idee wo ich gerade hänge ?

Danke

Gruß BadFsaadKl
Mitglied: colinardo
14.01.2014, aktualisiert um 20:44 Uhr
Hi,
01.
SELECT 
02.
  a.ab_datum, 
03.
  a.f_bez, 
04.
  a.herst, 
05.
  a.typ, 
06.
  a.ser_nr 
07.
FROM 
08.
  osq01_abflug a, 
09.
  osq01_flug b 
10.
WHERE 
11.
  a.f_bez = b.f_bez AND 
12.
  b.s_ort = 'Luxemburg' AND 
13.
  b.z_ort = 'Ankara' AND 
14.
  a.ab_datum BETWEEN '10.11.2006' AND '20.11.2006' 
15.
ORDER BY a.ab_datum DESC 
16.
LIMIT 1
Grüße Uwe
Bitte warten ..
Mitglied: BadFsaadKl
14.01.2014 um 20:36 Uhr
Hi Uwe,

bekomme hier immer nur den 15.11.06 als Wert raus.
selbst wenn ich die Sortierung DESC durch ASC tausche.

Grüße Michel
Bitte warten ..
Mitglied: colinardo
14.01.2014 um 20:45 Uhr
hab's grad nochmal geändert, kann's gerade nicht testen ...
Bitte warten ..
Mitglied: BadFsaadKl
14.01.2014 um 20:45 Uhr
Ich habe auch das gleiche wenn ich ich mir nur den größten Wert von Durchschnittswerten anzeigen lassen möchte:

01.
SELECT 
02.
  a.herst AS "HERST", 
03.
  AVG(a.f_std) AS "MMFST" 
04.
FROM 
05.
  osq01_flugzeug a 
06.
GROUP BY a.herst 
07.
ORDER BY MMFST DESC
Ergebnis:
01.
Douglas        	8447 
02.
Boeing         	6225 
03.
Airbus         	3239,333333333333333333333333333333333333
Und wenn ich das jetzt mit Rownum mache bekomme ich was völlig anderes:
01.
SELECT 
02.
  a.herst AS "HERST", 
03.
  AVG(a.f_std) AS "MMFST" 
04.
FROM 
05.
  osq01_flugzeug a 
06.
WHERE ROWNUM = 1 
07.
GROUP BY a.herst 
08.
ORDER BY MMFST DESC
Ergebnis:
01.
Boeing         	4567
Bitte warten ..
Mitglied: BadFsaadKl
14.01.2014 um 20:47 Uhr
Mit dem Limit bekomme ich gleich nen ORA Fehler:
01.
ORA-00933: SQL command not properly ended 
02.
00933. 00000 -  "SQL command not properly ended" 
03.
*Cause:     
04.
*Action: 
05.
Fehler in Zeile: 16 Spalte: 1
Bitte warten ..
Mitglied: colinardo
14.01.2014 um 20:52 Uhr
oh nö das ist ja Oracle , dann geht das nicht, wie du es dort machst:
http://stackoverflow.com/questions/11390585/maxdate-sql-oracle
Sorry bin grad auf dem Smartphone
Bitte warten ..
Mitglied: colinardo
LÖSUNG 14.01.2014, aktualisiert um 21:51 Uhr
So müsste es für Oracle gehen
01.
SELECT * FROM ( 
02.
SELECT 
03.
  a.ab_datum, 
04.
  a.f_bez, 
05.
  a.herst, 
06.
  a.typ, 
07.
  a.ser_nr 
08.
FROM 
09.
  osq01_abflug a, 
10.
  osq01_flug b 
11.
WHERE 
12.
  a.f_bez = b.f_bez AND 
13.
  b.s_ort = 'Luxemburg' AND 
14.
  b.z_ort = 'Ankara' AND 
15.
  a.ab_datum BETWEEN '10.11.2006' AND '20.11.2006' 
16.
ORDER BY a.ab_datum DESC) 
17.
WHERE ROWNUM=1;
Bitte warten ..
Mitglied: BadFsaadKl
14.01.2014 um 21:50 Uhr
Supi.
Funktioniert.

Danke Uwe

Gruß Michel
Bitte warten ..
Mitglied: Biber
LÖSUNG 15.01.2014, aktualisiert 29.04.2014
Moin BadFsaadKl und colinardo,

da muss ich Einspruch erheben - diese Abfrage liefert bei den oben angegebenen Daten das richtige Ergebnis - aber nicht bei anderen.
Da das "Abflugdatum" in der Tabelle osq01_abflug nur ein Stringwert ist (und kein Datum), wird hier auch nur ein Stringvergleich gemacht.

Bedeutet: bei der Prüfung "...a.ab_datum BETWEEN '10.11.2006' AND '20.11.2006' " werde alle Strings gefunden, die zwischen "10*" und "20*" sind und davon der "höchste" genommen.
Das muss aber nicht mal ein Datumswert, geschweige denn ein Datum aus dem Jahr 2006 sein,

Beispiel: Wenn in den gefundenen Daten auch noch ein Flug "LH-421" von Luxemburg nach Ankara wäre z.B vom Datum 18.11.2013 (also eigentlich ausserhalb des vermeinlich abgefragten Zeitraums "...a.ab_datum BETWEEN '10.11.2006' AND '20.11.2006' " , dann wird wegen des Stringsvergleichs mit colinardos Abfrage dieser gefunden.

01.
with osq01_abflug( ab_datum, f_bez, herst, typ, ser_nr) as 
02.
(         select '17.11.06', 'LH-421', 'Boeing' , 'B777', 'xv23-0889' from dual 
03.
union all select '15.11.06', 'LH-421',  'Boeing', 'B777', 'xv56-3142' from dual 
04.
union all select '18.11.13', 'LH-421',  'Boeing', 'B777', 'xv99-0815' from dual 
05.
)  
06.
, osq01_flug (f_bez, s_ort, z_ort) as 
07.
 (                select  'LH-421', 'Luxemburg', 'Ankara' from dual ) 
08.
  
09.
SELECT * FROM ( 
10.
SELECT 
11.
  a.ab_datum, 
12.
  a.f_bez, 
13.
  a.herst, 
14.
  a.typ, 
15.
  a.ser_nr 
16.
FROM 
17.
  osq01_abflug a, 
18.
  osq01_flug b 
19.
WHERE 
20.
  a.f_bez = b.f_bez AND 
21.
  b.s_ort = 'Luxemburg' AND 
22.
  b.z_ort = 'Ankara'   AND 
23.
    a.ab_datum BETWEEN '10.11.2006' AND '20.11.2006'  
24.
ORDER BY a.ab_datum  DESC) 
25.
WHERE ROWNUM=1;
Ergebnis ist ein Datum definitiv ausserhalb des Bereichs 10.Nov 2006 - 20.Nov 2006..
AB_DATUM | F_BEZ  | HERST  | TYP  | SER_NR    
---------+--------+--------+------+---------- 
18.11.13 | LH-421 | Boeing | B777 | xv99-0815
Besser wäre es mit einer Prüfung auf Datumswerte:

01.
with osq01_abflug( ab_datum, f_bez, herst, typ, ser_nr) as 
02.
(         select '17.11.06', 'LH-421', 'Boeing' , 'B777', 'xv23-0889' from dual 
03.
union all select '15.11.06', 'LH-421',  'Boeing', 'B777', 'xv56-3142' from dual 
04.
union all select '18.11.13', 'LH-421',  'Boeing', 'B777', 'xv99-0815' from dual 
05.
)  
06.
, osq01_flug (f_bez, s_ort, z_ort) as 
07.
 (                select  'LH-421', 'Luxemburg', 'Ankara' from dual ) 
08.
  
09.
SELECT * FROM ( 
10.
SELECT 
11.
  a.ab_datum, 
12.
  a.f_bez, 
13.
  a.herst, 
14.
  a.typ, 
15.
  a.ser_nr 
16.
FROM 
17.
  osq01_abflug a, 
18.
  osq01_flug b 
19.
WHERE 
20.
  a.f_bez = b.f_bez AND 
21.
  b.s_ort = 'Luxemburg' AND 
22.
  b.z_ort = 'Ankara'   AND 
23.
   To_date(a.ab_datum, 'dd.mm.yy') BETWEEN To_date('10.11.2006', 'dd.mm.yyyy') AND to_date('20.11.2006','dd.mm.yyyy') 
24.
ORDER BY To_date(a.ab_datum, 'dd.mm.yy') DESC) 
25.
WHERE ROWNUM=1;
Ergebnis.
AB_DATUM | F_BEZ  | HERST  | TYP  | SER_NR    
---------+--------+--------+------+---------- 
17.11.06 | LH-421 | Boeing | B777 | xv23-0889

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Datenbanken
gelöst Hilfe bei SQL-Abfrage (5)

Frage von emeriks zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage mit "kleiner gleich" funktioniert nicht (2)

Frage von derSESO zum Thema Datenbanken ...

Datenbanken
gelöst SQL Abfrage - Ausgabe von Person mit Privat- und Dienstadresse (3)

Frage von CBruns zum Thema Datenbanken ...

Datenbanken
gelöst Verschachtelte SQL-Abfrage (4)

Frage von User1000 zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (42)

Frage von Winuser zum Thema Hyper-V ...

Linux Netzwerk
gelöst DHCP vergibt keine Adressen (31)

Frage von Maik82 zum Thema Linux Netzwerk ...

Exchange Server
gelöst Bestehende eMails autoamatisch weiterleiten (22)

Frage von metal-shot zum Thema Exchange Server ...

Apache Server
gelöst Lets Encrypt SSL mit Apache2 (20)

Frage von banane31 zum Thema Apache Server ...