Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server:como selecionar uma quantidade fixa de linhas (selecione cada valor x-th)


Em essência, tudo o que você precisa fazer para selecionar o valor x é manter todas as linhas onde o módulo do número da linha dividido por x é 0.
WHERE rn % @x_thValues = 0

Agora, para poder usar seu ROW_NUMBER resultado, você precisará envolver a instrução inteira em uma subseleção
SELECT  *
FROM    (
            SELECT  *
                    , rn = ROW_NUMBER() OVER (ORDER BY Value)
            FROM    DummyData
        ) d
WHERE   rn % @x_thValues = 0                    

Combinado com uma variável para quais valores x-th você precisa, você pode usar algo como este testscript
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