从表列的最大日期之间的SQL总和情况

时间:2014-09-17 00:12:22

标签: sql sum max case-when

我想在日期介于最大日期减去7和最大日期之间的SQL案例中进行求和,但是无法使其正确。

实施例: sum( date 之间的最大值(日期来自字段) - 7和max(日期来自字段)然后列到sum < / em> else 0 end)as&#39; 0-7 Days&#39;

2 个答案:

答案 0 :(得分:1)

This may work:

我可能会对DATEDIFFs感到有些困惑,但它应该是那些行

SUM(CASE
    WHEN DATEDIFF(DAY,datecolumn,DATEADD(DAY,-7,max(datecolumn)))<0 AND DATEDIFF(DAY,datecolumn,max(datecolumn))>0
    THEN columntosum
    ELSE 0 
    END) AS '0-7 Days'

答案 1 :(得分:1)

在大多数数据库中,您可以执行以下操作:

select (case when datecol >= maxdatecol - 7 and datecol <= maxdatecol then columntosum else 0
        end) as days_0_7
from (select t.*,
             max(datecol) over () as maxdatecol
      from table t
     ) t;

请注意,日期算术因数据库而异,因此这种确切的语法可能不起作用(小修改应解决大多数数据库的问题)。