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.
Neuester Wert einer Gruppe
Moderator: Moderatoren
Re: Neuester Wert einer Gruppe
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.
Gruß Barlee
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)
)
Re: Neuester Wert einer Gruppe
.. 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.
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
...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
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
...ok
Mein Gedanke war: 'Anhand von Datum -Werten 2 Tabellen zu verknüpfen ist nicht gerade sicher was die Ergebnisse angeht.'
Diese Abfrage ist je nach Größe der 'Tabelle' deutlich langsamer - ggf. sollte man in der Inneren Abfrage nur die gewünschten Felder angeben.
Was ist mit der Jahreszahl ? - hat die Tabelle nur Werte von einem Jahr ?
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);
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;
Rechtschreibfehler sind beabsichtigt und unterliegen dem Copyright !
Re: Neuester Wert einer Gruppe
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
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


Rechtschreibfehler sind beabsichtigt und unterliegen dem Copyright !