尝试在where语句中选择记录(具有最大日期)

时间:2019-10-24 16:32:12

标签: sql-server

尝试在同一条语句中使用SUM()WHERE并获得汇总错误

我尝试了多种方法来仅选择最新条目,然后对其进行汇总,我希望能够提取数据库中的4条最新条目

@total_value bigint,

Select @total_value = SUM(TotalMB) 
FROM TABLE
WHERE DATE >= getdate()-1
   and (
        RuleName like '%Used Memory%'
        or RuleName like '%Available Mbytes%'
       )

这些是表条目

  

2019-10-23 22:00:00.000 3958 ServerA已用内存兆字节

     

2019-10-23 22:00:00.000 16028 ServerA可用的兆字节

     

2019-10-23 22:00:00.000 15919 ServerB可用的兆字节

     

2019-10-23 22:00:00.000 49335 ServerB使用的内存兆字节

当我使用WHERE DATE >= MAX(DATE)

时,我希望能够接受这4个条目

1 个答案:

答案 0 :(得分:0)

下一条语句可能是您的问题的可能解决方案:

DECLARE @total_value bigint

SELECT @total_value = SUM(TotalMB) 
FROM (
   SELECT 
      *,
      ROW_NUMBER() OVER (ORDER BY [DATE] DESC) AS Rn
   FROM TABLE
   WHERE 
      ([DATE] >= DATEADD(day, -1, GETDATE())) and 
      (RuleName like '%Used Memory%' or RuleName like '%Available Mbytes%')
) t
WHERE t.Rn <= 4

注意:

  • 通过表中的[DATE]列对行进行排序
  • 使用DATEADD()函数将指定的数字值添加到日期值的指定日期部分。