Попытка выбрать записи (с максимальной датой), где утверждение - PullRequest
0 голосов
/ 24 октября 2019

Пытаясь использовать 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 Используемая память MBytes

2019-10-23 22: 00: 00.000 16028 Сервер A Доступные МБ

2019-10-23 22: 00: 00.000 15919 СерверB Доступные МБ

2019-10-23 22:00:00.000 49335 ServerB Используемая память MBytes

Я ожидаю, что смогу принять эти 4 записи, когда я использую WHERE DATE >= MAX(DATE)

1 Ответ

0 голосов
/ 24 октября 2019

Возможно, следующее утверждение является возможным решением вашего вопроса:

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(), чтобы добавить указанное числовое значение к указанной части даты значения даты.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...