Как ограничить выбор х результатов последних дней для каждого устройства - PullRequest
0 голосов
/ 08 июня 2018

Я хотел бы ограничить x последними днями для каждого идентификатора устройства и идентификатора этого выбора:

SELECT DeviceId, Id, MAX(DateAndTime) as 'DateAndTime'
FROM EventAndMessage
GROUP BY DeviceId, Id
ORDER BY DateAndTime DESC`

Пример результата:

DeviceId            Id      DateAndTime
00:11:22:33:44:55   00D330  2018-05-25 15:41:10.620
00:03:4F:00:10:94   027286  2018-05-11 09:23:26.927
00:03:4F:00:10:94   0351DE  2018-05-11 09:23:13.690
00:03:4F:00:10:94   0351DE  2018-05-11 09:23:09.747
00:03:4F:00:10:94   0351DE  2018-05-11 09:23:01.797
00:03:4F:00:10:94   0351C4  2018-05-11 09:22:47.633

В этом примере я хотел бымаксимум 2 младших записи максимум.Примечание: 2 должен быть параметром, который я могу изменить.

Правильный результат должен быть таким:

DeviceId            Id      DateAndTime
00:11:22:33:44:55   00D330  2018-05-25 15:41:10.620
00:03:4F:00:10:94   027286  2018-05-11 09:23:26.927
00:03:4F:00:10:94   0351DE  2018-05-11 09:23:13.690
00:03:4F:00:10:94   0351DE  2018-05-11 09:23:09.747
00:03:4F:00:10:94   0351C4  2018-05-11 09:22:47.633

Спасибо

1 Ответ

0 голосов
/ 08 июня 2018

Oracle 12c и выше -

SELECT DeviceId, Id, MAX(DateAndTime) as 'DateAndTime'
FROM EventAndMessage
GROUP BY DeviceId, Id
ORDER BY DateAndTime DESC
FETCH FIRST X ROWS ONLY;
...