2013-05-02 78 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