从部分汇总的年度数据中获取季度行数

时间:2016-02-27 13:54:07

标签: sqlite

我有一张类似

的表格
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 个答案:

答案 0 :(得分: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;