Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server:come selezionare una quantità fissa di righe (seleziona ogni x-esimo valore)

In sostanza, tutto ciò che devi fare per selezionare il valore x-esimo è conservare tutte le righe in cui il modulo del numero di riga diviso per x è 0.

WHERE rn % @x_thValues = 0

Ora per poter utilizzare il tuo ROW_NUMBER risultato, dovrai racchiudere l'intera istruzione in una sottoselezione

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

Combinato con una variabile per i valori x-esimo di cui hai bisogno, potresti usare qualcosa come questo 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