Funktion "Letzter Wert" in Abfragen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Funktion "Letzter Wert" in Abfragen

Re: Funktion "Letzter Wert" in Abfragen

von Barlee » Mo, 19.10.2009 19:43

Hallo Zummy,

probier es mal in der Art. (auf die Schnelle und ungetestet)
"SQL direkt ausführen" sollte aktiviert sein.
Spaltenbezeichner, Tabellennamen usw. ggf. anpassen.

Code: Alles auswählen

SELECT 
"Tab_A"."KONTOSTAND",
"Tab_A"."KONTO",
"Tab_A"."DATUM"

FROM
(
SELECT 
"KONTOSTAND" ,
"KONTO",
"DATUM"
FROM "Kontostand" 
) "Tab_A",
(
SELECT MAX( "DATUM" ), "KONTO" FROM "Kontostand" GROUP BY "KONTO"
) "Tab_B"
WHERE "Tab_A"."KONTO" = "Tab_B"."KONTO"
AND "Tab_A"."DATUM" = "Tab_B"."DATUM"
Gruß Barlee

Re: Funktion "Letzter Wert" in Abfragen

von zummy » Do, 15.10.2009 23:30

Hallo Barlee,

danke für deine Antwort! Jetzt bin ich schonmal einen Schritt weiter.
Ich möchte aber den neuesten Kontostand für jedes Konto ausgegeben konnte. In der Tabelle Kontostand stehen die Kontostände der Konten "bar", "Giro", "Sparbuch" usw. So bekomme ich aber nur den neuesten ausgegeben, unabhängig vom Konto.

Wenn ich eine Zeile

Code: Alles auswählen

GROUP BY Kontostand.KONTO;
anhänge, kommt aber wieder eine Fehlermeldung:
Not in aggregate function or group by clause: org.hsqldb.Expression@dabcea in statement [SELECT "KONTOSTAND" FROM "Kontostand" WHERE "DATUM" = ( SELECT MAX( "DATUM" ) FROM "Kontostand" ) GROUP BY "Kontostand"."KONTO"]
Wie kann ich denn hier diese Gruppierung hinbekommen?

Re: Funktion "Letzter Wert" in Abfragen

von Barlee » Mi, 14.10.2009 11:02

Hallo Zummy,

da Du nur den Kontostand suchst, der dem max. Datum zugeordnet ist, kannst Du so vorgehen:

Code: Alles auswählen

SELECT Kontostand FROM Tabelle WHERE Datum = (SELECT MAX(Datum) FROM Tabelle)
Gruß Barlee

Re: Funktion "Letzter Wert" in Abfragen

von AndreasJBittner » Di, 13.10.2009 19:22

Hallo,

ersetze doch Last(XY) durch z. B. Max(ID), wenn Dein Last() auch den höchsten Wert hat.

Grüße
Andreas

Funktion "Letzter Wert" in Abfragen

von zummy » Di, 13.10.2009 17:25

Hallo,

ich versuche gerade, eine Access-Datenbank auf OOO-Base umstellen. Beim Programmieren einer Abfrage habe ich jedoch große Probleme.
Der von Access ausgegebene SQL-Code sieht so aus:

Code: Alles auswählen

SELECT Kontostand.Konto, Max(Kontostand.Datum) AS MaxvonDatum, Last(Kontostand.Kontostand) AS LetzterWertvonKontostand
FROM Kontostand
GROUP BY Kontostand.Konto;
Wenn ich den SQL-Code in OOO übernehme, kommt als Fehler beim Ausführen der Abfrage:
Access in denied: LAST in statement [...]
In der Entwurfsansicht kann ich die Abfrage auch nicht nachbauen, da die Funktion "Letzter Wert" - anders als in Access - nicht angeboten wird.

Ich möchte doch nur, dass der Wert in der Spalte "Kontostand" ausgegeben wird, der zum maximalen Datum gehört, also der aktuellste Wert. Wie kann ich das erreichen?

Danke schonmal!
Zummy

Nach oben