2012-11-07 76 views
2

我有一個表中有一個日期列和值根據日期。正常情況下,如果我想選擇兩個日期之間的數據,我們使用BETWEEN語法,但它會帶來每一天之間我有這兩個值given.Is是否有可能改變它,使它帶來的日期與我給了sopme間隔?例如,如果做一個簡單的從sql獲取每週數據

​​

應該給我的日期爲:

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. 

所以這給了我我的周值。 我如何實現這一目標?

+1

聽起來像你想要一個GROUP BY與DATEPART()的配對http://msdn.microsoft.com/en-us/library/ms177673.aspx http://msdn.microsoft.com/en-我們/庫/ ms174420.aspx。 – Gibron

回答

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

編輯1:

根據您的評論,如果你想檢索一個星期只有一天。根據你所舉的例子,星期一。所以我用集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

+0

嗯,如果你在組中只有一個字段的語法,那麼這個工作就可以了。我有更多的:)而且我不需要總和,我的值都是計算出來的,我需要的只是在特定日期獲取值。 – Sin5k4

+0

@ Sin5k4:這完全是一個新問題...... :) –

+1

@ Sin5k4似乎你需要你更新你的問題。你說你不想要錢,但你要求「每週總計」。你也說「在那個特定的日期」,這似乎也是你的問題中沒有提到的新要求... – Gibron