SQL按偏移日期范围分组

时间:2014-08-14 16:34:12

标签: sql sql-server sql-server-2008 tsql

我们说我有一张名字,每日收益和日期的表格

GainTable

NAME     GAIN     DATE
JOHN     10      01/01/2014
ISABEL   20      01/02/2014
VASILIY  10      01/01/2014

让我们说每个人每天都有收获。

我想找出每个人每月获得的收益

我是这样做的。

SELECT NAME, SUM(GAIN), MONTH(DATE)
FROM GainTable
group by Name, YEAR(DATE), MONTH(DATE)

现在,我的任务是像以前一样按月分组,但是从月的第2天开始,到下个月的第1天结束(例如,8月组将从8月2日到9月1日开始)。 我怎样才能做到这一点?任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:2)

尝试从真实的'中删除单个日期。一个月和那个月(和年)分组:

SELECT NAME,YEAR(DATEADD(D, -1, DATE)), MONTH(DATEADD(D, -1, DATE)), SUM(GAIN) Gain_Total
FROM GainTable
GROUP BY Name, YEAR(DATEADD(D, -1, DATE)), MONTH(DATEADD(D, -1, DATE))