2012-08-07 60 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