Выбор каждой десятой строки в SQL Server

Чтобы выбрать каждую десятую строку из таблицы базы данных SQL Server, вы можете использовать различные методы. Вот несколько подходов:

  1. Использование функции ROW_NUMBER():

    SELECT *
    FROM (
       SELECT *, ROW_NUMBER() OVER (ORDER BY [column_name]) AS RowNum
       FROM [table_name]
    ) AS t
    WHERE (RowNum % 10) = 0;
  2. Использование предложения OFFSET-FETCH (доступно в SQL Server 2012 и более поздних версиях):

    SELECT *
    FROM [table_name]
    ORDER BY [column_name]
    OFFSET 9 ROWS FETCH NEXT 1 ROWS ONLY;
  3. Использование подзапроса со столбцом IDENTITY:

    SELECT *
    FROM (
       SELECT *, (ROW_NUMBER() OVER (ORDER BY [column_name]) - 1) AS RowNum
       FROM [table_name]
    ) AS t
    WHERE (RowNum % 10) = 0;
  4. Использование временной таблицы или табличной переменной:

    DECLARE @TempTable TABLE
    (
       RowNum INT IDENTITY(1,1),
       [column1] datatype,
       [column2] datatype,
       ...
    )
    
    INSERT INTO @TempTable
    SELECT [column1], [column2], ...
    FROM [table_name]
    ORDER BY [column_name]
    
    SELECT [column1], [column2], ...
    FROM @TempTable
    WHERE (RowNum % 10) = 0;