#sql #sql-server #tsql #select #row-number
Вопрос:
У меня есть несколько сотен строк данных, пронумерованных SELECT ROW_NUMBER() OVER (ORDER BY LastName)
.
Мне нужно пропустить 3 из этих строк каждые 3 строки в этом выборе. Поэтому мне нужно выбрать строки 1, 2, 3… затем пропустить строки 4, 5, 6… затем включить строки 7, 8, 9… затем пропустить строки 10, 11, 12… и так далее, и так далее. Мне нужно уметь делать это динамически, чтобы он масштабировался с любым выбором размера.
(Мне также нужно будет получить обратные результаты вышесказанного, но предполагаю, что я могу экстраполировать из предоставленного ответа.)
Ответ №1:
Вы можете использовать подзапрос:
select t.*
from (select t.*, row_number() over (order by lastname) as seqnum
from t
) t
where seqnum % 6 in (1, 2, 3);