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

Få en tilfældig værdi fra et interval i MS SQL?

DECLARE @t TABLE
(VALUE CHAR(3))

INSERT @t
VALUES
('000'),('002'),('005'),('190')


;WITH rnCTE
AS
(
    SELECT -1 + ROW_NUMBER() OVER (ORDER BY TYPE, number, name) AS rn
    FROM master.dbo.spt_values
)
SELECT RIGHT('000' + CAST( rn AS VARCHAR(11)),3)
FROM rnCTE
WHERE NOT EXISTS    (   SELECT 1 FROM @t 
                        WHERE VALUE = rn
                    )
AND rn < 1000

REDIGER

Denne forespørgsel fungerer ved at generere den komplette liste over mulige tal fra en systemtabel (master.dbo.spt_values ) som med garanti indeholder mere end 1000 rækker inde i CTE rnCTE . -1 er tilføjet til ROW_NUMBER for at få værdierne til at starte ved 0 i stedet for 1.

Den ydre forespørgsel nul udfylder tallene til visning og returnerer kun dem, der ikke er i kildedataene og er mindre end 1000.



  1. Hvordan udtrækker man medianværdi?

  2. Sådan opdaterer du eksisterende data med SQLite

  3. Brug af konfigurationstabeller til at definere den faktiske arbejdsgang

  4. Sådan beregnes det gennemsnitlige salg pr. uge i MySQL