sql >> Database >  >> RDS >> Sqlserver

SQL Server:hoe een vast aantal rijen te selecteren (selecteer elke x-de waarde)

In wezen is het enige wat u hoeft te doen om de x-de waarde te selecteren, alle rijen te behouden waarbij de modulus van het rijnummer gedeeld door x 0 is.

WHERE rn % @x_thValues = 0

Nu uw ROW_NUMBER . kunnen gebruiken 's resultaat, moet u de hele verklaring in een subselectie plaatsen

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

Gecombineerd met een variabele tot welke x-de waarden je nodig hebt, zou je zoiets als dit testscript kunnen gebruiken

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                    


  1. ORA-01000:maximale open cursors overschreden in asp.net

  2. Bewaar uitvoer van sql-functie naar csv-bestand (COPY) met dynamische bestandsnaam

  3. Maak elk uur een MySQL-tabel leeg

  4. Converteer celinhoud naar hyperlink in MySQL Datagridview