sql - 如何在 SQL 中聚合 7 天

标签 sql sql-server sql-server-2008

我试图在 SQL Server 中聚合 2013 财年(从 2012 年 10 月 1 日开始,到 2013 年 9 月 30 日结束)的 7 天数据,但到目前为止还没有成功。有人可以看一下吗?下面是我的示例数据。

DATE       BREAD    MILK    
10/1/12    1        3
10/2/12    2        4
10/3/12    2        3
10/4/12    0        4
10/5/12    4        0
10/6/12    2        1
10/7/12    1        3
10/8/12    2        4
10/9/12    2        3
10/10/12   0        4
10/11/12   4        0
10/12/12   2        1
10/13/12   2        1

所以,我想要的输出是这样的:

DATE       BREAD    MILK
10/1/12    1        3
10/2/12    2        4
10/3/12    2        3
10/4/12    0        4
10/5/12    4        0
10/6/12    2        1
Total      11       15
10/7/12    1        3
10/8/12    2        4
10/9/12    2        3
10/10/12   0        4
10/11/12   4        0
10/12/12   2        1
10/13/12   2        1
Total      13       16

--------through 9/30/2013

请注意,由于 FY13 于 10/1/2012 开始并于 9/30/2012 结束,FY13 第一周为 6 天,而不是 7 天。

我使用的是 SQL Server 2008。

最佳答案

您可以为日期值添加一个新的计算列,以按周对它们进行分组并对其他列求和,如下所示:

SELECT DATEPART(ww, DATEADD(d,-2,[DATE])) AS WEEK_NO, 
       SUM(Bread) AS Bread_Total, SUM(Milk) as Milk_Total
FROM YOUR_TABLE
GROUP BY DATEPART(ww, DATEADD(d,-2,[DATE]))

注意:我使用 DATEADD 并根据您的日期减去 2 天,将一周的第一天设置为星期一。如果需要,您可以修改它。

关于sql - 如何在 SQL 中聚合 7 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15619507/

相关文章:

.net - 使用ManagementObjectSearcher获得Sql Server 2008安装根的SqlServiceAdvancedProperty名称?

php - Laravel/SQL 按流行度/趋势排序

sql - SQL中如何将外键设为NULLABLE?

sql - SQL中Top和Limit关键字的区别

mysql - 查询一个报告的两个表(高级)

sql-server - 如何预热休眠的 SQL Server 数据库

sql - 在 t-sql 中枚举星期几

java - Hibernate 无效的列名

sql-server-2008 - Cursor 使用中的 T-Sql 错误

sql - 在 where 子句中合并两个 CONTAINS 调用