Sql server 尝试在where语句中选择记录(最长日期)

Sql server 尝试在where语句中选择记录(最长日期),sql-server,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 '%Avai

尝试在同一语句中使用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服务器A已用内存MB

2019-10-23 22:00:00.000 16028服务器A可用兆字节

2019-10-23 22:00:00.000 15919服务器B可用MB

2019-10-23 22:00:00.000 49335服务器B已用内存MB


当我使用WHERE DATE>=MAXDATE

时,我希望能够获取这4个条目。可能下一个语句是您问题的可能解决方案:

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函数将指定的数字值添加到日期值的指定日期部分。
再次感谢你的帮助,Zhorov。我将尽我所能学习并分享这些信息,以帮助他人