【问题标题】:Calculate Sum based on dates (Current, 7 Days,...)根据日期计算总和(当前、7 天、...)
【发布时间】:2013-05-02 21:43:56
【问题描述】:

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

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

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

请帮忙!

【问题讨论】:

    标签: sql sql-server sql-server-2008


    【解决方案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...) 表达式。

    【讨论】:

      【解决方案2】:
      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
      

      【讨论】:

        猜你喜欢
        • 2012-02-03
        • 2017-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多