Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: TomWinter am Mai 18, 2017, 14:56:16

Titel: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: TomWinter am Mai 18, 2017, 14:56:16
Hallo zusammen,

ich hoffe, ihr könnt mir bei folgendem Problem helfen.

Ich habe in ACCESS zwei Tabellen:



Tabelle "Datum" mit dem Feld "Datum"

In dieser Tabelle stehen die Daten (Mehrzahl von Datum), die ausgewertet werden sollen.

Beispiel:

Datum
01.03.2017
02.03.2017
03.03.2017
04.03.2017
05.03.2017



Tabelle "Bestand" mit den Feldern "Bestandsdatum" und "Bestandsmenge"

In dieser Tabelle sind nur Datensätze enthalten, an denen sich die "Bestandsmenge" geändert hat

Beispiel:

Bestandsdatum | Bestandsmenge
01.03.2017 | 15
03.03.2017 | 20
05.03.2017 | 5



Nun habe ich eine Abfrage mit folgender SQL-Syntax erstellt:

SELECT Datum.Datum, Bestand.Bestandsmenge
FROM Datum LEFT JOIN Bestand ON Datum.Datum = Bestand.Bestandsdatum;


Damit erhalte ich folgende Ausgabe:

Datum | Bestandsmenge
01.03.2017 | 15
02.03.2017 |
03.03.2017 | 20
04.03.2017 |
05.03.2017 | 5



Nun meine Frage. Wie muss ich den SQL-Syntax ändern, damit immer die letzte bekannte "Bestandsmenge" angezeigt wird? Also wie folgt:

Datum | Bestandsmenge
01.03.2017 | 15
02.03.2017 | 15
03.03.2017 | 20
04.03.2017 | 20
05.03.2017 | 5


Ich hoffe, es hat jemand eine Lösung für mein Problem und bedanke mich schon mal.

Viele Grüße
Tom
Titel: Re: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: Beaker s.a. am Mai 18, 2017, 15:44:24

SELECT Max(Datum.Datum) AS Letzter, Bestand.Bestandsmenge
FROM Datum LEFT JOIN Bestand ON Datum.Datum = Bestand.Bestandsdatum;

"Datum" ist schelchte Benamsung, da reserviertes Wort.
Titel: Re: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: TomWinter am Mai 18, 2017, 16:06:10
Vielen Dank für die schnelle Antwort.

Leider klappt es nicht. ACCESS meldet folgenden Fehler: "Sie wollten eine Abfrage ausführen, die den angegebenen Ausdruck 'Bestandsmenge' nicht als Teil der Aggregatfunktion einschließt.

Grüße
Tom
Titel: Re: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: Beaker s.a. am Mai 18, 2017, 17:22:15
Hallo Tom,
Sorry, mal wieder gar nicht richtig gelesen  >:(
Muss ich noch mal einen Moment drüber nachdenken  :-[
gruss ekkehard
Titel: Re: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: Lachtaube am Mai 18, 2017, 17:49:52
ekkehard, wenn Du schon beim Nachdenken bist, erkläre doch bitte auch einmal die Bedeutung des Wortes "Benamsung" (im Duden habe ich dazu nichts finden können und eine gleichnamige chinesische Provinz konnte ich auch nicht ergründen). :)
Titel: Re: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: DF6GL am Mai 18, 2017, 17:57:32
Hallo,

http://universal_lexikon.deacademic.com/34252/Benamsung  ;) :)
Titel: Re: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: Beaker s.a. am Mai 18, 2017, 18:08:28
Hallo,
Zitaterkläre doch bitte auch einmal die Bedeutung des Wortes "Benamsung"
Meinst du das ernst?
https://www.google.de/?gws_rd=ssl#q=access+benamsungen&spf=1495123275055 (https://www.google.de/?gws_rd=ssl#q=access+benamsungen&spf=1495123275055)

Mit dem Nachdenken komme ich allerdings nicht weiter; - keine Ahnung wo's da beimir wieder hakt  >:(

gruss ekkehard
Titel: Re: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: DF6GL am Mai 18, 2017, 18:23:19
Hallo,

wo(bei) denkst Du denn nach?

Die Fehlermeldung bedeutet, dass die Abfrage nicht gruppiert ist, was die Domänenfunktion erfordert.


Titel: Re: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: Lachtaube am Mai 18, 2017, 19:10:45
Klar meine ich das ernst. Unter einer Benennung oder einer Benamung (klingt auch schon etwas merkwürdig) kann ich mir etwas vorstellen, selbst benamsen ist mir schon zu Ohren gekommen - mit dem Substantiv Benamsung bin ich (außerhalb von Access-Foren) allerdings noch nie nie in Berührung gekommen - aber vielleicht stamme ich ja auch nur aus der falschen Ecke Deutschlands. :)
Titel: Re: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: ebs17 am Mai 18, 2017, 20:03:51
Evtl. so:
SELECT
   D.Datum,
   IIF(B.Bestandsmenge IS NULL,
   (
      SELECT TOP 1
         X.Bestandsmenge
      FROM
         tblBestand AS X
      WHERE
         X.BestandsDatum < D.Datum
      ORDER BY
         X.BestandsDatum DESC
   )
   , B.Bestandsmenge) AS Bestandsmenge
FROM
   tblDatum AS D
      LEFT JOIN tblBestand AS B
      ON D.Datum = B.BestandsDatum
Titel: Re: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: Beaker s.a. am Mai 18, 2017, 20:27:53
Zitatmit dem Substantiv Benamsung bin ich (außerhalb von Access-Foren)
W
Na, wo sind wir denn hier?  ;)

@Eberhard
Danke.
Titel: Re: Abfrage (SQL), letzen bekannten Wert ausgeben
Beitrag von: TomWinter am Mai 19, 2017, 06:58:36
Guten Morgen zusammen,

der Code von  ebs17 war perfekt. Hat geklappt. Vielen Dank an alle für die schnelle Hilfe.

Grüße
Tom