SqlServer recuperare il primo numero libero

sabato 17 marzo 2012 - 16.03
Tag Elenco Tags  SQL Server 2008

andrestu Profilo | Expert

avendo una tabella con una colonna X di tipo numerico (int, smallint, tynint) esiste un comando che interrogando la suddetta tabella mi restituisca il primo numero disponibile della colonna X ?
oppure devo ricavarmelo manualmente facendo il select di tutti i record per verificare poi il primo numero libero ???

Andrea Restucci - Web Developer

alexmed Profilo | Guru

Ciao
Il primo numero libero potrebbe essere: SELECT MAX(colonna_X) +1
alexmed

andrestu Profilo | Expert

e no, perchè il primo numero libero potrebbe essere per esempio tra 2 e 4, quindi 3...

Andrea Restucci - Web Developer

renarig Profilo | Expert

Non mi viene in mente niente di meglio che un
accrocchio con la funzione ROW_NUMBER()


( pero qualcosa di meglio dovrebbe esserci )


________________________________________________


Prova cosi:


-- Crea un nuovo DB CREATE DATABASE Rfff; GO -- Uso il DB appena creato USE Rfff; GO -- Creo una tabella CREATE TABLE dbo.Tab ( ID int IDENTITY(1,1) PRIMARY KEY, Num int NULL, Nome nvarchar(50) NULL ) GO -- inserisco un po di dati SET IDENTITY_INSERT dbo.Tab ON INSERT INTO dbo.Tab (ID, Num, Nome) VALUES (452, 3, N'Marco'), (287, 2, N'Roberta'), (574, 8, N'Alessia'), (625, 1, N'Giuseppe'), (118, 5, N'Antonio'), (282, 9, N'Marika'), (941, 7, N'Ursula'); SET IDENTITY_INSERT dbo.Tab OFF GO -- Creo una vista con quello che ti interessa CREATE VIEW [dbo].[hhh] AS SELECT MIN(RoNu) AS Min FROM ( SELECT Num, ROW_NUMBER() OVER (ORDER BY Num) AS RoNu FROM dbo.Tab ) AS Tabx WHERE RoNu<>Num GO -- Finito nella vista "hhh" cè il primo numero -- del campo "Num" non utilizzato

andrestu Profilo | Expert

ok grande, grazie mille.
Ho estrapolato il Select e ho creato un SP che prende il nome della tabella e della colonna e restituisce il primo numero libero.
se vi interessa questo è il codice per crearla:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Andrea Restucci - Web Developer
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5