2013-05-02 124 views
0

以下是我目前的工作表的一個例子:總和計算根據日期(目前,7天,...)

Date -------- Number -------Total 
2012-03-28  3   158     
2012-03-29  4   168    
2012-04-08  2   256    
2012-04-12  1   155.98    
2012-04-14  6   245.00    
2012-04-20  10  156    
2012-04-21  8   87  
2012-04-26  3   158     
2012-04-26  4   168    
2012-04-29  2   256    
2012-04-30  1   155.98    
2012-05-02  6   245.00    
2012-05-02  10  156    
2012-05-02  8   87   

我需要得到像從這個如下表:

Total ----- Current ----7Days----14Days 
2451.96 1225.98 1869.96 1869.96    

在這種情況下,道達爾是SUM(合計), 電流爲-7天,從今天的日期(2013年5月2日),所以它增加了從05年/ 02/2013-04/25的總和/ 2013 7天從今天的日期是-14或從當前的-7天。所以它增加了從05/02/2013-04/18/2013的總和。

如此。我不知道如何創建一個查詢來獲得7天的總和。

請幫忙!

回答

0
SELECT SUM(Total) as 'Total', 
     SUM(CASE WHEN convert(varchar(11),Date,101) >= convert(varchar(11),GETDATE() - 7,101) 
       THEN Total ELSE 0 END) as 'Current', 
     SUM(CASE WHEN convert(varchar(11),Date,101) >= convert(varchar(11),GETDATE() - 14,101) 
       THEN Total ELSE 0 END) as '7Days' , 
     SUM(CASE WHEN convert(varchar(11),Date,101) >= convert(varchar(11),GETDATE() - 28,101) 
       THEN Total ELSE 0 END) as '14Days' 
FROM mytable 

輸出

TOTAL CURRENT 7DAYS 14DAYS 
2451.96 1225.98 1468.98 2125.96 
1

可以使用聚合函數與CASE表達式得到的結果:

select 
    sum(total) Total, 
    sum(case when date >= dateadd(d, -7, getdate()) then total end) [Current], 
    sum(case when date >= dateadd(d, -14, getdate()) then total end) [7Days], 
    sum(case when date >= dateadd(d, -21, getdate()) then total end) [14Days] 
from yt; 

SQL Fiddle with Demo

如果您有更多的日期範圍,那麼你將添加米礦石sum(case...)表達式。

+0

+1 bluefeet .... – rahularyansharma 2013-05-02 13:39:20