Heim >Datenbank >MySQL-Tutorial >Wie summiere ich Geldwerte in SQL basierend auf einer monatlichen Bedingung?
SQL-Summe mit Bedingung (einschließlich monatsbasierter Berechnungen)
Sie haben eine große SQL-Anweisung, die den Gesamtbetrag für jede einzelne Transaktion berechnet ID mithilfe der folgenden Zeile:
select sum(cash) from Table a where a.branch = p.branch and a.transID = p.transID) TotalCash
Jetzt müssen Sie die Abrechnung so ändern, dass sie nur die Summe der Barwerte mit einem Wertdatum enthält innerhalb des letzten Monats. Hier ist eine Lösung:
select sum(CASE WHEN ValueDate > @startMonthDate THEN cash ELSE 0 END) from Table a where a.branch = p.branch and a.transID = p.transID) TotalMonthCash
Erklärung
Die CASE-Anweisung verwendet die gesuchte CASE-Ausdruckssyntax, um einen booleschen Ausdruck auszuwerten (in diesem Fall WHEN ValueDate > @ startMonthDate) und geben ein entsprechendes Ergebnis zurück (hier Bargeld). Wenn die Bedingung nicht erfüllt ist, wird stattdessen 0 zurückgegeben.
Optimierungstipp
Wenn die Leistung ein Problem darstellt, sollten Sie die Verwendung von JOIN und GROUP BY anstelle einer abhängigen Unterabfrage in Betracht ziehen für eine bessere Effizienz.
Das obige ist der detaillierte Inhalt vonWie summiere ich Geldwerte in SQL basierend auf einer monatlichen Bedingung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!