Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server:как да изберете фиксирано количество редове (изберете всяка x-та стойност)

По същество всичко, което трябва да направите, за да изберете x-тата стойност, е да запазите всички редове, където модулът на номера на реда, разделен на x, е 0.

WHERE rn % @x_thValues = 0

Сега, за да можете да използвате своя ROW_NUMBER Резултатът ще трябва да обвиете целия израз в подизбор

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

В комбинация с променлива към какви x-ти стойности се нуждаете, можете да използвате нещо като този тестов скрипт

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Намерете невалидни дати в SQL Server 2008

  2. Кои са най-добрите инструменти за контрол на версиите на Sql Server

  3. Как да прехвърлям изчислена колона с правилен десетичен/$ резултат

  4. Как да извикате съхранена процедура с SQLAlchemy, която изисква дефиниран от потребителя тип таблица параметър

  5. Неправилен синтаксис близо до ''