SQL Server 从周一开始按周汇总

mic*_*elg 1 sql t-sql sql-server

我需要从周一开始按周汇总收入字段。我的数据如下:

Date        Rev
+----------+--------
 4/10/2017     5
 4/11/2017     6
 4/12/2017     7
 4/13/2017     8
 4/17/2017     9
 4/19/2017     12
Run Code Online (Sandbox Code Playgroud)

我希望数据显示一周的第一天和该周的摘要,例如:

Date        Rev
+----------+--------
 4/10/2017     26
 4/17/2017     21
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Joe*_*orn 5

select DATEADD(week, DATEDIFF(week,0, [date]) , 0) as [date], sum(rev)
from [data]
group by DATEADD(week, DATEDIFF(week,0, [date]) , 0)
order by [date]
Run Code Online (Sandbox Code Playgroud)

SQLFiddle

这映射到您的示例数据。它之所以有效,是因为第 0 天(1900 年 1 月 1 日)恰好是星期一。如果您需要使用星期日或星期二作为一周的开始,您将相应地调整输入日期和偏移量。