Berechnung der Summe mit bedingten Valutadaten
In einer SQL-Anweisung möchten Sie den Gesamtbetrag für jede eindeutige Transaktions-ID innerhalb der letzten berechnen Monat. Um dies zu erreichen, müssen Sie eine vorhandene Anweisung so ändern, dass sie die Bedingung enthält, dass nur Barwerte mit einem Wertstellungsdatum nach einem bestimmten Datum einbezogen werden sollen.
Um dieses Problem zu beheben, haben Sie versucht, die CASE-Anweisung zu verwenden, aber Es ist ein Fehler aufgrund einer falschen Syntax aufgetreten.
Die korrekte Syntax für den gesuchten CASE-Ausdruck lautet:
CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END
Der Ausdruck sollte wie folgt geändert werden folgt:
SUM(CASE WHEN ValueDate > @startMonthDate THEN cash ELSE 0 END)
Dieser Ausdruck wertet das ValueDate-Feld für jeden Datensatz aus. Wenn das ValueDate größer als das angegebene Startmonatsdatum ist, wird der Barwert zurückgegeben; andernfalls wird 0 zurückgegeben. Die resultierenden Werte werden dann summiert, um den Gesamtbetrag für den angegebenen Zeitraum bereitzustellen.
Alternativer Ansatz
Für eine verbesserte Leistung sollten Sie stattdessen die Verwendung einer JOIN- und GROUP BY-Anweisung in Betracht ziehen eine abhängige Unterabfrage:
SELECT SUM(cash) FROM Table_a AS a JOIN Table_b AS b ON a.branch = b.branch AND a.transID = b.transID WHERE ValueDate > @startMonthDate GROUP BY a.transID
Dieser Ansatz vermeidet den mit einer Unterabfrage verbundenen Overhead und kann zu einer schnelleren Ausführung führen Zeit.
Das obige ist der detaillierte Inhalt vonWie summiert man Barwerte effizient nach Transaktions-ID basierend auf dem Valutadatum in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!