找出两个连续月份数据之间的差异

时间:2015-01-29 12:45:51

标签: mysql views

我有一个表 - month_score,其中包含以下列 -
1. 1.Month
2.year
3.start_date-这是每个月的第一个日期得分记录。
4.得分。

有数据的表格如

'扬' '2012' '2012-01-02' '35'
'二月'2012 '2012-01-02' '65'
“三月'2012 '2012-01-02' '55'
'月' '2012' '2012-01-02' '35'
'五一' '2012' '2012-01-02' '55'
'六一''2012 '2012-01-02' '25'
'七月'2012 '2012-01-02' '85'
'月' '2012' '2012-01-02' '105'
'月' '2012' '2012-01-02' '95'
“十月'2012 '2012-01-02' '45'
“十一月'2012 '2012-01-02' '85'
'月' '2012' '2012-01-02' '25'
'一月' '2013' '2012-01-02' '65'




高达

'Dec''2014''2012-01-02''35'

我需要创建一个视图来获取两个连续分数之间的差异,如
'扬' '2012' '2012-01-02' '35' '35'
'二月'2012 '2012-01-02' '65' '30'
'月' '2012' '2012-01-02' '55' '-10'

虽然我能够在一年内完成这项任务,但当年份发生变化时会出现问题。

1 个答案:

答案 0 :(得分:1)

假设start_date确实是每个月的第一个日期,那么您可以使用自我加入:

select t.*, t.score - tprev.score
from table t left join
     table tprev
     on year(t.start_date) * 12 + month(t.start_date) =
        year(tprev.start_date) * 12 + month(tprev.start_date) + 1;

您可以使用月份名称执行类似操作,但逻辑很多更复杂。