SQL sum大小写介于表列的最大日期之间

SQL sum大小写介于表列的最大日期之间,sql,sum,max,case-when,Sql,Sum,Max,Case When,我试图在SQL中求和,当一个日期介于max date减7和max date之间时,但无法得到正确的结果 例如: 求和(如果日期介于max(从字段开始的日期)-7和max(从字段开始的日期)之间,则列加和(否则0结束)为“0-7天” This may work: 我可能有点搞不清楚日期差异,但应该是这样的 SUM(CASE WHEN DATEDIFF(DAY,datecolumn,DATEADD(DAY,-7,max(datecolumn)))<0 AND DATEDIFF(DAY

我试图在SQL中求和,当一个日期介于max date减7和max date之间时,但无法得到正确的结果

例如: 求和(如果日期介于max(从字段开始的日期)-7和max(从字段开始的日期)之间,则列加和(否则0结束)为“0-7天”

This may work:
我可能有点搞不清楚日期差异,但应该是这样的

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'
SUM(大小写)
当DATEDIFF(DAY,datecolumn,DATEADD(DAY,-7,max(datecolumn))为0时
然后是柱状体
其他0
结束)作为“0-7天”

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

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;

select(datecol>=maxdatecol-7和datecol时的情况)我认为您需要两个过程或一个子查询,否则,您如何知道最大(日期)?如果您的数据库支持CTE,这应该很容易设置。您使用的是哪一个数据库。如果您可以共享一些示例数据和数据库及其版本,这将非常有用。