Newsgroup: it.comp.software.database
Titolo: Qry Microsoft Sql Server

Salve,
no una colonna chiamata CODICE e dovrei selezionare con una SELECT
solo i "buchi" di questi codici progressivi.
Mi spiego meglio.
Ho 100 righe
SELECT * FROM CODICI
CODICE
000001
000005
000006
000010
000023
000025
000026
000050
000089
000100
Dovrei scrivere una select che mi restituisca i "salti" di codici che
non sono presenti ad es.:
000002
000003
000004
000007
etc.....
il tipo del campo č: nvarchar(6)
Come posso fare?
Grazie

 solo i "buchi" di questi codici progressivi.
Mhhhh , con una select sulla tabella non credo si possa fare (almeno io 
no... ).
Creando una seconda tabella con un campo codice e riempiedola con i numeri 
progressivi da 1 a xxxx puoi fare una left join con la condizione where 
tabelladummy.codice is null.
A questo punto forse č meglio fare un ciclo da codice
Giulio

salve,

puoi utilizzare una tabella temporanea per eseguire la comparazione...
SET NOCOUNT ON
CREATE TABLE dbo.aTable (
 Codice nvarchar(6) PRIMARY KEY ,
 dati varchar(10) DEFAULT 'DATI'
 )
GO
PRINT 'Popolo tabella con salti'
DECLARE @i int
SET @i = 1
WHILE @i <= 10 BEGIN
 IF @i % 3 <> 0
  INSERT INTO dbo.aTable VALUES ( RIGHT('00000' + CONVERT(varchar , @i) , 
6 ) , DEFAULT)
 SET @i = @i + 1
END
GO
PRINT 'Popolo tabella temporanea completa che copra l''intero range'
DECLARE @max int
DECLARE @t TABLE (Codice nvarchar(6))
SELECT @max = CONVERT( int , MAX(Codice)) FROM dbo.aTable
DECLARE @i int
SET @i = 1
WHILE @i <= @max BEGIN
 INSERT INTO @t VALUES ( RIGHT('00000' + CONVERT(varchar , @i) , 6 ) )
 SET @i = @i + 1
END
PRINT 'Selezione dei soli codici non presenti nella base table'
SELECT t.Codice
 FROM @t t
 WHERE t.Codice NOT IN (SELECT Codice FROM dbo.aTable)
GO
DROP TABLE dbo.aTable
--<--------
Popolo tabella con salti
Popolo tabella temporanea completa che copra l'intero range
Selezione dei soli codici non presenti nella base table
Codice
------ 
000003
000006
000009
saluti
-- 
Andrea Montanari (Microsoft MVP - SQL Server)
http://www.asql.biz/DbaMgr.shtm
 
http://italy.mvps.org
DbaMgr2k ver 0.11.1  -  DbaMgr ver 0.57.0
(my vb6+sql-dmo little try to provide MS MSDE 1.0 and MSDE 2000 a visual 
interface)
--------- remove DMO to reply 

 ha scritto nel messaggio
news:ug9p71915ng95pkvv...@4ax.com...

Ciao Yachi
prova a vedere se puň andare bene una query che rende i codici mancanti e li
visualizza nel modo (DaCodice a Codice)
es...
--------------
Create table Codici (Codice Varchar(6))
Insert Codici
SELECT '000001' UNION
SELECT '000005' UNION
SELECT '000006' UNION
SELECT '000010' UNION
SELECT '000023' UNION
SELECT '000025' UNION
SELECT '000026' UNION
SELECT '000050' UNION
SELECT '000089' UNION
SELECT '000100'
SELECT C1.Codice+1 AS Da,
       (SELECT TOP 1 Codice+0
        FROM Codici
        WHERE Codice>C1.Codice+1
        ORDER BY Codice)-1 A
FROM   (Select '000000' Codice
        UNION
        SELECT Codice
        FROM Codici) AS C1
  LEFT JOIN Codici AS C2 ON C1.Codice+1=C2.Codice
WHERE C2.Codice IS NULL
ORDER BY C1.Codice
DROP TABLE CODICI
---------------
Risultato
-----------
Da          A
----------- ----------- 
2           4
7           9
11          22
24          24
27          49
51          88
90          99
101         NULL
(righe interessate: 8)
Ciao Giorgio
-- 
Giorgio Rancati
[Office Access MVP]

 tabelladummy.codice is null.
si chiama tabella pivot
invece di crearsela con tutti numeri io di solito metto solo le cifre e 
faccio il prodotto cartesiano:
select c1.cifra + c2.cifra * 10 + ... numero
from cifre c1, cifre c2, ....