Neuester Wert einer Gruppe

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

ooo-fan
Beiträge: 1
Registriert: Do, 11.12.2008 21:44

Neuester Wert einer Gruppe

Beitrag 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.
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Neuester Wert einer Gruppe

Beitrag 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
Benutzeravatar
ulehmann
*
Beiträge: 15
Registriert: Do, 11.12.2008 08:44

Re: Neuester Wert einer Gruppe

Beitrag 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.
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Neuester Wert einer Gruppe

Beitrag 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
Benutzeravatar
ulehmann
*
Beiträge: 15
Registriert: Do, 11.12.2008 08:44

Re: Neuester Wert einer Gruppe

Beitrag 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 ?
Rechtschreibfehler sind beabsichtigt und unterliegen dem Copyright !
Barlee
******
Beiträge: 767
Registriert: Sa, 17.12.2005 12:27

Re: Neuester Wert einer Gruppe

Beitrag 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
Benutzeravatar
ulehmann
*
Beiträge: 15
Registriert: Do, 11.12.2008 08:44

Re: Neuester Wert einer Gruppe

Beitrag von ulehmann »

:? - "autsch" - :lol:
Rechtschreibfehler sind beabsichtigt und unterliegen dem Copyright !
Antworten