Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server:So wählen Sie eine feste Anzahl von Zeilen aus (wählen Sie jeden x-ten Wert aus)

Im Wesentlichen müssen Sie zur Auswahl des x-ten Werts nur alle Zeilen beibehalten, bei denen der Modulus der Zeilennummer dividiert durch x 0 ist.

WHERE rn % @x_thValues = 0

Jetzt können Sie Ihre ROW_NUMBER verwenden 's Ergebnis müssen Sie die gesamte Anweisung in eine Unterauswahl umschließen

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

Kombiniert mit einer Variablen für die x-ten Werte, die Sie benötigen, könnten Sie so etwas wie dieses Testskript verwenden

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