Получите n-ую запись для каждого SerialNumber - PullRequest
0 голосов
/ 24 августа 2018

У меня есть таблица, которая выглядит так:

ID | SerialNumber | SomeData
---|--------------|---------
1  | 1            | abc
2  | 1            | def
3  | 1            | ghi
4  | 1            | jkl
5  | 2            | mno
6  | 2            | pqr

Теперь я хочу запрос, который возвращает SomeData для каждого n-го ID каждого серийного номера (если этот n-й идентификатор существует для этого серийного номера). Так что если n=2, то вывод, который я хотел бы получить:

ID | SerialNumber | SomeData
---|--------------|---------
2  | 1            | def
6  | 2            | pqr

Я думаю, что это уже половина решения, но я не могу понять, как заставить его делать то, что я хочу: Как найти 11-ю запись в таблице базы данных SQL Access?

1 Ответ

0 голосов
/ 24 августа 2018

MS Access - паршивая база данных для такого рода вещей.Вы можете перечислить значения с помощью подзапроса, а затем использовать его для выбора:

select t.*
from (select t.*,
             (select count(*)
              from <your table> as t2
              where t2.serialnumber = t.serialnumber and t2.id <= t.id
             ) as seqnum
      from <your table> as t
     ) as t
where seqnum = 2;

Средний подзапрос на самом деле не нужен.Вы можете поместить коррелированный подзапрос в предложение where.Я нахожу эту форму более понятной в намерениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...