Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server :comment sélectionner un nombre fixe de lignes (sélectionner chaque x-ième valeur)

Essentiellement, tout ce que vous avez à faire pour sélectionner la x-ième valeur est de conserver toutes les lignes où le module du numéro de ligne divisé par x est égal à 0.

WHERE rn % @x_thValues = 0

Maintenant, pour pouvoir utiliser votre ROW_NUMBER , vous devrez encapsuler l'intégralité de l'instruction dans une sous-sélection

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

Combiné avec une variable sur les x-ièmes valeurs dont vous avez besoin, vous pouvez utiliser quelque chose comme ce script de test

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