2016-02-27 15 views
0

季度行我有一個表,看起來像正從局部聚集的年度數據

 
account | date  | value 
1.11  | 2014-03-31 | 10 
1.11  | 2014-06-30 | 20 
1.11  | 2014-09-30 | 30 
1.11  | 2014-12-31 | 100 
1.21  | 2014-03-31 | 15 
1.21  | 2014-06-30 | 20 
1.21  | 2014-09-30 | 35 
1.21  | 2014-12-31 | 90 
1.11  | 2015-03-31 | 10 
1.11  | 2015-06-30 | 20 
1.11  | 2015-09-30 | 30 
1.11  | 2015-12-31 | 100 

值列在XXXX-12-31是每年總。我想獲得一張看起來像

 
account | date  | value 
1.11  | 2014-03-31 | 10 
1.11  | 2014-06-30 | 20 
1.11  | 2014-09-30 | 30 
1.11  | 2014-12-31 | 40 
1.21  | 2014-03-31 | 15 
1.21  | 2014-06-30 | 20 
1.21  | 2014-09-30 | 35 
1.21  | 2014-12-31 | 20 
1.11  | 2015-03-31 | 10 
1.11  | 2015-06-30 | 20 
1.11  | 2015-09-30 | 30 
1.11  | 2015-12-31 | 40 

其中xxxx-12-31行現在有季度數據。順便說一下它是如何將有可能得到的數據只是2014年第四季度?即像

 
1.11  | 2014-12-31 | 40 
1.21  | 2014-12-31 | 20 

回答

1

當日期與-12-31結束,減去其他值的總和同年:

SELECT account 
     date, 
     CASE WHEN date NOT LIKE '%-12-31' 
     THEN value 
     ELSE value - (SELECT SUM(value) 
        FROM MyTable AS T2 
        WHERE strftime('%Y', T2.date) = strftime('%Y', MyTable.date) 
         AND T2.date < MyTable.date) 
     END AS value 
FROM MyTable;