Seite 1 von 1
Neuester Wert einer Gruppe
Verfasst: Do, 11.12.2008 21:55
von ooo-fan
Hallo,
ich habe folgende Tabelle:
Datum|Wert
20.10.08|10
31.10.08|20
02.11.08|15
Nun möchte ich eine Abfrage erstellen, die mir pro Monat den neuesten Wert liefert, also
Monat|Wert
10|20
11|15
Habe keine entsprechende Aggregatfunktion für "by group" gefunden. Hat jemand eine Idee?
Cu, ooo-fan.
Re: Neuester Wert einer Gruppe
Verfasst: Do, 11.12.2008 22:35
von Barlee
Hallo ooo-fan,
Du ermittelst das letzte Datum MAX(Datum) eines jeden Monats und suchst danach nach dem Wert, der zu diesem Datum gehört.
Code: Alles auswählen
SELECT
MONTH(Datum) AS Monat,
Datum,
Wert
FROM [Deine_Tabelle]
WHERE Datum IN
(
SELECT
MAX(Datum) as Max_Datum
FROM [Deine_Tabelle]
GROUP BY MONTH(Datum)
)
Gruß Barlee
Re: Neuester Wert einer Gruppe
Verfasst: Fr, 12.12.2008 08:24
von ulehmann
.. mmh.
man kann auch in einer unter Abfrage die Datensätze sortieren (nach Gruppe und Datum) und in der haupt Abfrage die Daten gruppieren.
Nach der Gruppierung werden immer die zuerst gefundenen Werte zurück geliefert.
Re: Neuester Wert einer Gruppe
Verfasst: Sa, 13.12.2008 12:19
von Barlee
...man kann vieles, ulehmann.
Kannst Du vielleicht einmal ein Beispiel zu Deiner Antwort aufschreiben. Es wäre sicherlich für den Fragesteller von Interesse, wie die Umsetzung Deines Vorschlags aussieht.
Gruß Barlee
Re: Neuester Wert einer Gruppe
Verfasst: Mo, 15.12.2008 08:48
von ulehmann
...ok
Mein Gedanke war: 'Anhand von Datum -Werten 2 Tabellen zu verknüpfen ist nicht gerade sicher was die Ergebnisse angeht.'
Code: Alles auswählen
SELECT tmp.* FROM (
SELECT * FROM Tabelle ORDER BY DatumsFeld DESC
) tmp
GROUP BY MONTH(tmp.DatumsFeld)
ORDER BY MONTH(tmp.DatumsFeld);
Diese Abfrage ist je nach Größe der 'Tabelle' deutlich langsamer - ggf. sollte man in der Inneren Abfrage nur die gewünschten Felder angeben.
Code: Alles auswählen
SELECT tmp.* FROM (
SELECT MONTH(tmp.DatumsFeld) AS 'monat', ... FROM Tabelle ORDER BY DatumsFeld DESC
) tmp
GROUP BY tmp.monat
ORDER BY tmp.monat;
Was ist mit der Jahreszahl ? - hat die Tabelle nur Werte von einem Jahr ?
Re: Neuester Wert einer Gruppe
Verfasst: Mo, 15.12.2008 20:45
von Barlee
Hallo ulehmann,
galante Lösung!
Allerdings muss man berücksichtigen, dass diese nur mit einer "richtigen" DB umsetzbar ist.
HSQLDB verweigert derartige Konstrukte.
Gruß Barlee
Re: Neuester Wert einer Gruppe
Verfasst: Di, 16.12.2008 08:46
von ulehmann

- "autsch" -
