0

以下是我目前正在使用的表的示例:

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 天从今天日期(05/02/2013)所以它从 05/02/2013-04/25/2013 7 天从 -14 天开始相加今天的日期或当前的 -7。因此,它将 05/02/2013-04/18/2013 的总和相加。

所以。我不知道如何创建查询以获取 7 天的总和。

请帮忙!。

4

2 回答 2

2

您可以使用带有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

如果您有更多日期范围,那么您将添加更多sum(case...)表达式。

于 2013-05-02T13:32:08.430 回答
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
于 2013-05-02T13:32:00.303 回答