2012-08-07 39 views
0

我是一名Android程序员,我在我的应用程序中使用SQLite(没有太多选择:))。 我有一张表,其中包含一个unix时间戳字段。现在,如果我想个月,使在此表中的一些领域,集团的总和,我只是做:SQLite组由非日历月(从一个月的10日到下个月的10日)

SELECT一个月,一年,总和(X) 一个从Foo GROUP BY一个月,一年

(当然,月份和年份是日期函数)。

但是我想按照非日历月来分组,例如从一个月的第10个月到第10个月。

我有一个非常基本的SQL知识,所以我不知道如何去做。 有人告诉我我需要使用PARTITION BY,但SQLite不支持它。 我很确定有办法做到这一点。

由于提前, 埃拉德

回答

2

为了处理这个月的十分之一,你可以减去从日起10日内:

select strftime("%y %m", tendaysbefore), <whatever> 
from (select foo.*, 
      date(thedate, '-10 days') as tendaysbefore 
     from foo 
    ) t 
group by strftime("%Y-%m", tendaysbefore) 
order by 1, 2 

你可以把年份和月份成单独的列。这个例子有一列。

+0

我需要从当前月份减去这十天,并将它们添加到上个月,我该怎么做? – Elad92 2012-08-07 18:35:40

+0

我不明白。你有一个报告日期。如果您在该日期的月份之前进行报告,则会得到当月的日期。如果你减去10天,那么前10天将出现在前一个月。无论您使用的是当前日期还是其他日期,这都可以工作。 – 2012-08-07 18:37:24

+0

对不起,我不明白你的意思,我想我有你的想法,如果不是,请纠正我。您首先在10天之前进行查询并获取表格中的所有日期,因此现在当您进行查询时,它将是按照月份和年份分组的“常规”查询。因此,如果例如,我想从20日到20日分组,那么它将是'日期(日期,'-20天')'。对? – Elad92 2012-08-07 18:41:42