Hallo zusammen
Für folgende Problematik komme ich auf keine gescheite Lösung, resp konnte nichts finden: Nun mein 1. Eintrag :-[
Ich habe eine Transaktionstabelle mit n Produkten welche mit Käufen/Verkäufen befüllt wird.
Nun benötigt es Auswertungen.
- Summe der Stückzahl und Wert von Produkt A ab dem Zeitpunkt wo die Stückzahl zum letzten Mal 0 war.
Anhand Beispiel:
Produkt (A), Stück (210), Wert (1720)
Produkt (B), Stück (12), Wert (47)
- Summe des Wert von Produkt A von der ersten Transaktion bis zum letzten Zeitpunkt als die Stückzahl 0 war.
Anhand Beispiel:
Produkt (A), Wert (-100)
Produkt (B), Wert (-11)
Ich bin da wirklich zu doof um das auszuwerten. Oder brauchts da VB?
Tabelle: tab
Felder: ID, Produkt, Stück, Datum, Wert
Beispiel: [Kauf + Verkauf]
ID(0), Produkt (A), Stück (100), 01.01.2023, Wert (1000)
ID(1), Produkt (A), Stück (50), 02.01.2023, Wert (400)
ID(2), Produkt (B), Stück (10), 03.01.2023, Wert (33)
ID(3), Produkt (A), Stück (-150), 03.01.2023, Wert (-1700)
ID(4), Produkt (A), Stück (75), 04.01.2023, Wert (500)
ID(5), Produkt (B), Stück (-10), 05.01.2023, Wert (-44)
ID(6), Produkt (A), Stück (-75), 06.01.2023, Wert (-300)
ID(7), Produkt (A), Stück (200), 07.01.2023, Wert (1600)
ID('8'), Produkt (B), Stück (7), 08.01.2023, Wert (22)
ID(9), Produkt (A), Stück (10), 09.01.2023, Wert (120)
ID(10),Produkt (B), Stück (5), 10.01.2023, Wert (25)
P.s. Das Feld 'Wert' wird aus dem Datensatz berechnet. (Währungskurs*Kaufpreis*Stück)
Ich hoffe ihr könnt mich auf den richtigen Weg bringen ;)
Herzlichen Dank schonmal im Voraus!
Gruss
flue
ZitatOder brauchts da VB?
VBA ist der Ausweg, wenn man keine Abfrage mehr zusammenbekommt. Manche suchen früh den Ausweg, manche später.
Bei Abfragen macht man sich bewusst, dass man es mit Mengen und Mengenverarbeitung zu tun hat => alles auf einmal.
Grundlagen - SQL ist leicht (0) - Vorspiel (https://www.ms-office-forum.net/forum/showthread.php?t=317692)
Zeitpunkt wo die Stückzahl zum letzten Mal 0 war
SELECT
Produkt,
MAX(Datum) AS MD
FROM
tab
WHERE
Stück = 0
GROUP BY
ProduktSELECT
T.Produkt,
T.Stück
FROM
tab AS T
LEFT JOIN
(
SELECT
Produkt,
MAX(Datum) AS MD
FROM
tab
WHERE
Stück = 0
GROUP BY
Produkt
) AS S0
ON T.Produkt = S0.Produkt
AND
T.Datum >= S0.MDDas kann nun summiert werden. Die Herkunft von Wert (Währungskurs) ist nicht so richtig klar.
Zitatvon der ersten Transaktion bis zum letzten Zeitpunkt als die Stückzahl 0 war
Das ist für mich interpretierbar und also nicht präzise genug formuliert. Aber Erster und Letzter kannst Du von obigem Ansatz ableiten.