如何选择按周分组的记录(包含日期)

时间:2012-07-08 10:32:05

标签: c# sql-server group-by

我有一个包含日期字段的表+一个名为WeekDayID的字段(sun = 0,mon = 1,tue = 2,wed = 3,thu = 4,fri = 5,sat = 6)+其他字段(不重要),我需要两份报告:
1.基于月份 2.基于一周

我已完成报告编号1

我的问题是如何实现报告2,我需要一些能够给我这个的东西:


假设我们的日期是2001/01/01至2001/01/31

我希望按周分组,例如,如果2001/01/01是星期日,我想要像以下这样的群组:

第1周:2001/01/01 - 2001/01/02 - ... - 2001/01/07
第二周:2001/01/08 - ...... - 2001/01/14
第3周:2001/01/15 - ... - 2001/01/21
第4周:2001/01/22 - ... - 2001/01/28
第5周:2001/01/29 - 2001/01/30 - 2001/01/31

1 个答案:

答案 0 :(得分:1)

对于周数,您可以使用值为'ww'的Datepart函数作为第一个参数:

SELECT Datepart(ww, myDate) FROM myTable

对于日期范围,您可以做一些数学技巧:在工作日减去你的日期以获得一周的第一天:

SELECT DateAdd(day, - DatePart(weekday, myDate), myDate) Week_Start
from myTable

这里有一个指向DatePart函数的链接:

http://msdn.microsoft.com/es-es/library/ms174420.aspx