2017-10-27 6 views
1

Ich fange an, MYSQL zu lernen und habe ein Problem zur Hand, dass ich nicht herausfinden kann. Meine Tabelle sieht wie folgt aus:MYSQL zu berechnen YTD

OU Date Amt A20 201701 1000 A20 201705 1000 A20 201708 1000 B10 201702 1000 B10 201705 1000 Was würde Ich mag es, die YTD Betrag für jede Zeile von OU zu berechnen, die wie folgt aussieht:

OU Date Amt YTD A20 201701 1000 1000 A20 201705 1000 2000 A20 201708 1000 3000 B10 201702 1000 1000 B10 201705 1000 2000

ich verschiedene Summe und SUMIF Funktionen ausprobiert, aber couldn bekomme nicht die richtigen Ergebnisse. Kann jemand helfen? Jede Eingabe wird sehr geschätzt!

Antwort

0

Ein Ansatz nutzt eine korrelierte Unterabfrage:

SELECT 
    OU, 
    Date, 
    Amt, 
    (SELECT SUM(t2.Amt) FROM yourTable t2 
    WHERE t1.OU = t2.OU AND t2.Date <= t1.Date) AS YTD 
FROM 
    yourTable t1 
ORDER BY 
    OU, Date; 

Der Trick die Unterabfrage verwendet, ist zu summieren, für jeden Datensatz in der Tabelle, die Mengen der aktuellen oder früheren Daten, aus diesen Aufzeichnungen teilen die gleiche OU Wert als der aktuelle Datensatz. Sie können die Demo unten erkunden, um ein besseres Verständnis zu erhalten.

hier Demo:

Rextester

+0

Das ist schnell :)))) DANKE VIEL SO !!!!!!! – iweartwopants