Heim >Datenbank >MySQL-Tutorial >Wie summiere ich Geldwerte in SQL basierend auf einer monatlichen Bedingung?

Wie summiere ich Geldwerte in SQL basierend auf einer monatlichen Bedingung?

Barbara Streisand
Barbara StreisandOriginal
2024-12-23 15:41:15526Durchsuche

How to Sum Cash Values in SQL Based on a Monthly Condition?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn