假设我有一个包含姓名、每日 yield 和日期的表格
GainTable
NAME GAIN DATE
JOHN 10 01/01/2014
ISABEL 20 01/02/2014
VASILIY 10 01/01/2014
假设每个人每天都有收获。
我想知道每个人每月的 yield
我就是这样做的。
SELECT NAME, SUM(GAIN), MONTH(DATE)
FROM GainTable
group by Name, YEAR(DATE), MONTH(DATE)
现在,我的任务是像以前一样按月分组,但从该月的第 2 天开始,到下个月的第 1 天结束(例如,8 月组将从 8 月 2 日到 9 月 1 日开始)。 我怎样才能做到这一点?如有任何建议,我们将不胜感激。
最佳答案
尝试从“真实”日期中减去单个日期,然后按该月(和年份)进行分组:
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))
关于SQL 按偏移日期范围分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25313169/