sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server:cómo seleccionar una cantidad fija de filas (seleccione cada valor x-th)

En esencia, todo lo que necesita hacer para seleccionar el valor x-th es conservar todas las filas donde el módulo del número de fila dividido por x es 0.

WHERE rn % @x_thValues = 0

Ahora para poder usar tu ROW_NUMBER resultado, deberá envolver la declaración completa en una subselección

SELECT  *
FROM    (
            SELECT  *
                    , rn = ROW_NUMBER() OVER (ORDER BY Value)
            FROM    DummyData
        ) d
WHERE   rn % @x_thValues = 0                    

Combinado con una variable para los valores x-th que necesita, puede usar algo como este script de prueba

DECLARE @x_thValues INTEGER = 2

;WITH DummyData AS (SELECT * FROM (VALUES (1), (2), (3), (4)) v (Value))
SELECT  *
FROM    (
            SELECT  *
                    , rn = ROW_NUMBER() OVER (ORDER BY Value)
            FROM    DummyData
        ) d
WHERE   rn % @x_thValues = 0