从sql获取每周数据

时间:2012-11-07 06:47:58

标签: sql sql-server tsql

我有一个表格,其中有一个日期列和根据日期的值。通常,如果我想选择两个日期之间的数据,我们使用BETWEEN语法,但它会在我给出的那两个值之间带来每一天是否有可能改变它,所以它带来了我给出的时间间隔的日期?例如,如果做一个简单的

SELECT * FROM METABLE WHERE DATE BETWEEN '2012-06-11' AND '2012-07-11'

它应该给我带来日期:

2012-06-11 myValue Stuff 
2012-06-12 myValue Stuff 
.
.
.
2012-07-11 myValue Stuff.

是否可以将其更改为,

2012-06-11 myValue Stuff 
2012-06-18 myValue Stuff 
2012-06-25 myValue Stuff 
.
.
.
Until my end date.

所以这给了我每周的价值观。 我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

试试这个:

你可以使用分组 MIN() SUM()功能

SELECT min(date),sum(col1),sum(col2) 
FROM   METABLE 
WHERE  [DATE] BETWEEN '2012-06-11' AND '2012-07-11'
group by datepart(ww,[DATE])


Click here for demo

<强> EDIT1:

根据您的评论,如果您只想从一周内检索一天。在这里,根据你的例子,它的星期一。所以我使用 set datefirst 1 将其设置为星期一

set datefirst 1
select t.* 
from METABLE t
join
  (SELECT min([date]) as dt
   FROM METABLE 
   group by datepart(ww,[date]))a
on t.[date]=a.dt   

 set datefirst 7


Demo2

答案 1 :(得分:0)

我认为datepart功能可以帮到你。 Datepart function MSDN