gibt es einen möglichen Weg, diese negative Zahl zu finden, die nicht mit der Summe Kredite in Zukunft Datum klopft.fifo in sql query
sample gur.com/pcwhp.png
gibt es einen möglichen Weg, diese negative Zahl zu finden, die nicht mit der Summe Kredite in Zukunft Datum klopft.fifo in sql query
sample gur.com/pcwhp.png
Ich bin nicht sicher, ob Sie für Excel-Lösung oder SQL eines suchen weil es mit SQL zu arbeiten, ohne eindeutigen Schlüsseln schwer. Ich werde versuchen, Ihnen einen Vorschlag zu geben, wie ich das machen würde, vorausgesetzt, dass jede Transaktion ein eindeutiges ID-Feld hat.
Zuerst alle positiven Änderungen für Konto berechnen (dies wird ein Teil der Lösung sein, aber ich teile es für Klarheit).
SELECT
t.account,
SUM(t.debit) AS change_positive
FROM
transactions AS t
WHERE
t.debit > 0
GROUP BY
t.account
Jetzt haben Sie den Gesamtwert der wiederhergestellten Lastschrift nach Konto. In diesem Fall (10 + 5 +20)
Jetzt müssen Sie ähnliche Operation für Belastungen (negative Änderung) aber nur bis gegenwärtiger Betrieb z. für 21.12.2017 ist es -20, für 25.12.2017 ist es -55. Wenn Sie den Wert von debits_till_date haben, werden Sie wissen, ob payments_total diese Zahlung gedeckt hat oder ob es bereits zu hoch war, um von Zahlungen gedeckt zu werden. In SQL als Gesamt Abfrage (einschließlich vorherigen) würde es so aussehen:
SELECT
q.account,
q.date,
q.transaction_debit,
q.remainings_from_payments
FROM
(
SELECT
t.account,
t.date,
t.debit AS transaction_debit,
SUM(t2.debit) AS debits_till_date,
i.payments_total,
SUM(t2.debit) + i.payments_total AS remainings_from_payments
FROM
transactions AS t
LEFT JOIN transactions AS t2 ON t.account = t2.account AND t.date >= t2.date AND t2.debit < 0
LEFT JOIN (SELECT t.account, SUM(t.debit) AS payments_total FROM transactions AS t WHERE t.debit > 0 GROUP BY t.account) AS i ON t.account = i.account
GROUP BY
t.account, t.date
) AS q
WHERE
q.transaction_debit < 0
AND q.remainings_from_payments < 0
Wenn Sie letzten Teil entfernen „AND q.remainings_from_payments < 0“ können Sie sehen, wie viel von Zahlungen blieb nach jedem negative Transaktion
Hallo StromoPL, danke für die Abfrage. Lassen Sie mich versuchen, wenn es funktioniert. Tatsächlich schaue ich auf die gleiche Lösung wie in der Link http://www.sqlservercentral.com/articles/FIFO+Queues/145613/ Ich habe nur SQL DB2 und nicht sicher, wie Sie die Abfrage in verwendet werden der Link. außerdem habe ich keine eindeutige ID für die Transaktion. Nur Bezeichner ist die Summe aus Guthaben und Belastung für das Datum. –
Chris, Ich aktualisierte Abfrage, um "Datum" Feld zu verwenden und "Identifikation" zu vermeiden. Es sollte funktionieren, solange die Daten in den Konten eindeutig sind. Die von mir zur Verfügung gestellte Abfrage wurde auf mySQL getestet, aber es ist ziemlich Standard und sollte auf jeder Datenbank funktionieren, die plain SQL unterstützt (benenne einfach "transactions" -Tabelle von der Abfrage in den Namen deiner Tabelle um) – StormoPL
http://sqlfiddle.com/#! 9/49759d/1 –