Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据日期计算总和(当前,7天,…)_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 根据日期计算总和(当前,7天,…)

Sql 根据日期计算总和(当前,7天,…),sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,以下是我目前使用的表的示例: 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 2

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

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              
在这种情况下,总数为总和(Total), 当前日期是从今天(2013年2月5日)算起的-7天,因此它加上了从2013年2月5日到2013年4月25日的总和 7天是从今天起的-14天或从当前日期起的-7天。因此,它将2013年2月5日至2013年4月18日的总和相加

诸如此类。我不知道如何创建查询以获得7天的总和

请帮忙

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

您可以将聚合函数与
大小写表达式一起使用,以获得结果:

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;

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