简体   繁体   中英

Column that is the difference between values of same column perday

My table is as follows:

Balance          Value 1        Value2          Date        Daily Change (Expected)  
8                8,648,668.60   12,620,390.51   3/27/2018     -1
7                3,087,707.30   3,494,174.70    3/28/2018     -1
6                3,039,443.51   2,345,356.15    3/29/2018     -1

How can I format a query so that the "Daily Change" column is the difference of the latter day's balance and the former's?

Lets refer to my table as "table"

In order

3/27/2018 - 3/26/2018

3/28/2018 - 3/27/2018

3/29/2018 - 3/28/2018

You can use a left join :

select t.*,
       (t.balance - tprev.balance) as daily_change
from `table` t left join
     `table` tprev
     on t.date = tprev.date  + interval 1 day;

I used the following to answer this question:

SELECT t1.*,t1.balance-t2.balance Daily_Change FROM TestData t1 LEFT JOIN TestData t2 ON t2.report_date=DATE_SUB(t1.report_date, INTERVAL 1 DAY) AND t1.account=t2.account ORDER BY t1.report_date,t1.account

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM