Запрос на поиск строк с ближайшей датой в будущем - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь отобразить набор результатов, основанный на минимальном значении даты и сегодняшней дате, но не могу заставить его работать. По сути, это прайс-лист с учетом даты.

Пример данных

ID    Title    Value    ExpireDate
1     Fred      10       2019-03-01
2     Barney    15       2019-03-01
3     Fred2     20       2019-06-01
4     Barney2   25       2019-06-01
5     Fred3     30       2019-07-01
6     Barney3   55       2019-07-01

Требуемые результаты:
Отображение записей на основе минимальной даты> GetDate ()

3     Fred2     20       2019-06-01
4     Barney2   25       2019-06-01

Любая помощь будет отличной - спасибо.

1 Ответ

4 голосов
/ 02 мая 2019

Используйте условие where для фильтрации всех будущих строк и row_number() для поиска первой строки в группе:

SELECT *
FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY Title ORDER BY ExpireDate) AS rn
    FROM t
    WHERE ExpireDate >= CAST(CURRENT_TIMESTAMP AS DATE)
) AS x
WHERE rn = 1

Исходя из вашего пересмотренного вопроса, вы можете просто сделать это:

SELECT TOP 1 WITH TIES *
FROM t
WHERE ExpireDate >= CAST(CURRENT_TIMESTAMP AS DATE)
ORDER BY ExpireDate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...