SQL Server, выберите запись каждые 'х' количество записей - PullRequest
5 голосов
/ 29 января 2012

enter image description here

Привет,

У меня есть «Таблица1», как показано выше, с некоторыми записями на ней, а имена столбцов: Id, Name и [Date Entry].Идентификатор столбца является первичным ключом, я использую SQL Server 2005.

Я хочу написать запрос, который возвращает информацию каждые 5 записей, например, мой запрос будет возвращать:

enter image description here

Как вы видите в конечном результате, была выбрана только запись из каждых 5 записей, как мне этого добиться?

Спасибо

Ответы [ 3 ]

16 голосов
/ 29 января 2012
SELECT id, name, entryDate 
  FROM (SELECT ROW_NUMBER() OVER(ORDER BY id) rowNumber, Id, name, entryDate
          FROM MyTable)
  WHERE rowNumber = 1
     OR rowNumber % 5 = 0
0 голосов
/ 29 января 2012

Предполагая, что идентификаторы являются последовательными и уникальными (какими они кажутся), просто индекс + = 5 для каждой записи.Некоторый псевдокод для этого:

$index = 0;
while ( $index <= $totalRecords ) {
   $result = "select * from records where id='$index'";
   /*process results*/
   $index += 5; /*increment index for next query*/
}

Обратите внимание, что для идентификатора записи = 1 будет особый случай, поскольку ваши идентификаторы начинаются с 1, а не с 0.

Надеюсь, это даст вамидея.

0 голосов
/ 29 января 2012
select * from mytable 
where id = 1 or id % 5 = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...