Neuester Wert einer Gruppe

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: Neuester Wert einer Gruppe

Re: Neuester Wert einer Gruppe

von ulehmann » Di, 16.12.2008 08:46

:? - "autsch" - :lol:

Re: Neuester Wert einer Gruppe

von Barlee » Mo, 15.12.2008 20:45

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

von ulehmann » Mo, 15.12.2008 08:48

...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

von Barlee » Sa, 13.12.2008 12:19

...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

von ulehmann » Fr, 12.12.2008 08:24

.. 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

von Barlee » Do, 11.12.2008 22:35

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

Neuester Wert einer Gruppe

von ooo-fan » Do, 11.12.2008 21:55

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.

Nach oben