![]() |
Datenbank: ORACLE • Version: 9 • Zugriff über: BDE
SQL - Abfrage mit Max
Hallo zusammen,
ich habe zwei Tabellen. Tabelle1: AUFTRAGNR, TEXT 1, Test1 2, Test2 Tabelle2: AUFTRAGNR, DATUM 1, 11.10.2007 1, 12.10.2007 1, 13.10.2007 2, 10.10.2007 2, 11.10.2007 Nun möchte ich die Tabellen so verknüpfen, dass von jeder Auftragsnr. nur das grösste Datum angezeigt wird. -> Einschränkung: Es werden nur Datums berücksichtigt, wo das maximale Datum, älter als 1 Tag ist. -> angenommenes heutiges Datum: 12.10.2007 Ergebnis: AUFTRAGNR, TEXT, DATUM 2, 11.10.2007 Gruss Holger |
Re: SQL - Abfrage mit Max
SQL-Code:
select
t2.AUFTRAGNR, Max(t2.Datum), t1.TEXT from Tabelle2 t2 join Tabelle1 t1 on t1.AUFTRAGNR=t2.AUFTRAGNR group by t2.AUFTRAGNR, t1.TEXT; |
Re: SQL - Abfrage mit Max
Das klappt so leider nicht,
da jetzt alle Datums berücksichtigt werden. Möchte aber nur die Auftragsnummer anzeigen, wenn das Maximale Datum ÄLTER ALS 1 TAG ist. Da ist der Knackpunkt. Gruss Holger |
Re: SQL - Abfrage mit Max
Dann erweitere doch die Bedingung
|
Re: SQL - Abfrage mit Max
aber wie ?
Delphi-Quellcode:
Kann ja keine Max - Abfrage im Join verwenden.
select
t2.AUFTRAGNR, Max(t2.Datum), t1.TEXT from Tabelle2 t2 left join Tabelle1 t1 on t1.AUFTRAGNR=t2.AUFTRAGNR and max(t2.datum) < sysdate - 1 group by t2.AUFTRAGNR, t1.TEXT; Gruss Holger |
Re: SQL - Abfrage mit Max
und wenn ich mit mit WHERE kann ich auch nicht
Delphi-Quellcode:
machen.
WHERE MAX(t2.datum) < sysdate - 1
Was muss ich tuen ? Guss Holger |
Re: SQL - Abfrage mit Max
Und so?
SQL-Code:
WHERE t2.datum < sysdate - 1
|
Re: SQL - Abfrage mit Max
Wie wärs hiermit ?
SQL-Code:
Aber Achtung : das first heißt in Oracle anders.
select first 1 XY from Z order by Datum desc;
|
Re: SQL - Abfrage mit Max
So würde es klappen,
nur muss die Abfrage auf das Maximale Datum gehen, da sonst wie im Beispiel auch die Auftragsnummer 1 angezeigt würde, da dort ja auch Datums existieren, die älter als 1 Tag sind. Gruss Holger |
Re: SQL - Abfrage mit Max
Zitat:
|
Re: SQL - Abfrage mit Max
Du bist nahe dran, aber syntaktisch etwas im Schilf,
das hier entspricht etwa deinem SQL, einfach Oracle tauglich umgestellt:
SQL-Code:
und um dein Beispiel zu testen:
select t1.auftragnr, t1.text, max(t2.datum)
from tabelle1 t1, tabelle2 t2 where t1.auftragnr = t2.auftragnr and t2.datum < trunc(sysdate) group by t1.auftragnr, t1.text
SQL-Code:
Das würde dann als Resultat folgendes ausspucken:
select t1.auftragnr, t1.text, max(t2.datum)
from tabelle1 t1, tabelle2 t2 where t1.auftragnr = t2.auftragnr and t2.datum < to_date('12.Oct.2007') --trunc(sysdate) group by t1.auftragnr, t1.text
Code:
AUFTRAGNR TEXT MAX(T2.DATUM)
1 test1 11.10.07 2 test2 11.10.07 |
Re: SQL - Abfrage mit Max
Zitat:
SQL-Code:
ORDER BY DATUM, AUFTRAGSNR
|
Re: SQL - Abfrage mit Max
Zitat:
-> Deshalb muss ich ja das Maximale Datum abfragen, aber wie ? Weiss hier jemand wie das [/quote]
Delphi-Quellcode:
[quote]
select first 1 XY from Z order by Datum desc;
in Oracle geht ? Gruss Holger |
Re: SQL - Abfrage mit Max
Andere Idee (ungetestet):
SQL-Code:
//Edit: Im Subselect muss es Tabelle2 heißen
SELECT A.AuftragNr, A.Text, MAX(B.Datum)
FROM Tabelle1 A JOIN Tabelle2 B ON B.AuftragNr = A.AuftragNr WHERE NOT EXISTS( SELECT * FROM Tabelle2 C WHERE TRUNC(C.Datum) >= sysdate AND C.AutragNr = B.AuftragNr) GROUP BY A.Auftragnr,A.Text |
Re: SQL - Abfrage mit Max
Ah so, sorry, hab deinen Text zu schnell gelesen.
Dann halt so rum:
SQL-Code:
select t1.auftragnr, t1.text, max(t2.datum)
from tabelle1 t1, tabelle2 t2 where t1.auftragnr = t2.auftragnr group by t1.auftragnr, t1.text having max(t2.datum) < to_date('12.Oct.2007') --sysdate |
Re: SQL - Abfrage mit Max
Beide Lösungen klappen einwandfrei.
Super danke Gruss Holger |
Re: SQL - Abfrage mit Max
Wie ist es dir gelungen mit "FIRST 1" zwei Datensätze zurück zu bekommen ? :shock:
|
Re: SQL - Abfrage mit Max
Habe die Lösungen von DeddyH und ken_jones ausprobiert. Die haben geklappt.
Gruss Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz