Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Determinar Numeros Faltantes de Varias Secuencias de Numeros

Estas en el tema de Determinar Numeros Faltantes de Varias Secuencias de Numeros en el foro de SQL Server en Foros del Web. Buenas Noches amigos y muchas Gracias por anticipado por la ayuda que me puedan brindar. Necesito determinar los Numeros que faltan de cada secuencia de ...
  #1 (permalink)  
Antiguo 02/04/2013, 21:09
 
Fecha de Ingreso: agosto-2012
Mensajes: 13
Antigüedad: 12 años, 3 meses
Puntos: 0
Determinar Numeros Faltantes de Varias Secuencias de Numeros

Buenas Noches amigos y muchas Gracias por anticipado por la ayuda que me puedan brindar.

Necesito determinar los Numeros que faltan de cada secuencia de Numeros de documento y tengo los siguentes datos en una tabla:


Documento_No Importe
A010010010100000001 100.00
A010010010100000004 200.00
A020040020100000001 1000.00
A020040020100000007 400.00
entre otras secuencias..........
.......
.......
.......


Los Primeros 11 Caracteres son fijos de Cada Documento_No (Ej: A0200400201) y los Otros 8 son secuenciales, osea cada vez que se registra un nuevo documento se incrementa en uno la secuencia.

En el Query debo Mostrar la Siguiente Información a partir de los datos que tengo en la tabla:
Documentos Faltantes

A010010010100000002
A010010010100000003
A020040020100000002
A020040020100000003
A020040020100000004
A020040020100000005
A020040020100000006

Estos Serian los numeros faltantes de cada secuencia y asi mismo mostrar de cualquier otra que exista en la tabla.

Muchas Gracias a Todos por su ayuda.

Última edición por hondaalberto38; 02/04/2013 a las 21:11 Razón: El Texto no se veia Bien Justificado, los textos que escribi entre Documento_No e Importe salian pegados uno del otro
  #2 (permalink)  
Antiguo 03/04/2013, 08:30
Avatar de leodp77  
Fecha de Ingreso: marzo-2013
Mensajes: 39
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Determinar Numeros Faltantes de Varias Secuencias de Numeros

Toma los ultimos 8 digitos, convertilos a entero y, mientras no sea mayor que 9999999, conta desde el 1 y compara cada elemento con el que tenes.
__________________
"La mejor forma de obtener información correcta de los foros de internet es enviar algo incorrecto y esperar las correcciones"
-- Matthew Austern
  #3 (permalink)  
Antiguo 04/04/2013, 12:45
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años, 7 meses
Puntos: 15
Respuesta: Determinar Numeros Faltantes de Varias Secuencias de Numeros

leodp77 le estás sugiriendo hacerlo con un while, cosa que seria correcto para T-SQL. Como seria el codigo para realizarlo con una query?
  #4 (permalink)  
Antiguo 04/04/2013, 12:58
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Determinar Numeros Faltantes de Varias Secuencias de Numeros

con un substring ;) y un between de ese substring
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 08/04/2013, 12:26
 
Fecha de Ingreso: agosto-2012
Mensajes: 13
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Determinar Numeros Faltantes de Varias Secuencias de Numeros

Buenas tardes a Todos y Gracias por Sus respuestas


He intentado hacer lo Siguiente con el consejo que me dio Libras pero no me devuelve ningún dato, puede ser que este aplicando algo mal, soy novato en esto.

Utilice el Siguiente Query:

Select [Documento_No]
From TablaX
Where SubString([Documento_No],12,8) Between [Documento_No] and [Documento_No]



Muchas Gracias por sus respuestas a todos.
  #6 (permalink)  
Antiguo 08/04/2013, 15:29
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Determinar Numeros Faltantes de Varias Secuencias de Numeros

Select [Documento_No]
From TablaX
Where SubString([Documento_No],12,8) Between valor_inicial and valor_final

:)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 08/04/2013, 20:32
 
Fecha de Ingreso: agosto-2012
Mensajes: 13
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Determinar Numeros Faltantes de Varias Secuencias de Numeros

He Probado lo Siguiente y me devuelve todos los datos que estan en la Tabla que estan desde el Numero 1 hasta el 10, ejemplo:

A010010010100000001
A010010010100000002
A010010010100000003
....

Con el siguiente Query:

Select [Documento_No]
FROM Tabla X
Where SubString([Documento_No],12,8) Between 1 and 10

lo que necesito hacer es que si el número A010010010100000002 no esta en la Tabla el cual pertenece al rango del 1 al 10 me muestre solo ese no todos los demas.


Muchas Gracias de Nuevo por el tiempo que han invertido en ayudarme, le he dado mil vueltas a esto y nada que me sale el resultado.
  #8 (permalink)  
Antiguo 10/04/2013, 12:15
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 4 meses
Puntos: 180
Respuesta: Determinar Numeros Faltantes de Varias Secuencias de Numeros

Creo que necesitas entender que para MOVER AL MUNDO, requieres de una BASE, por tanto, analiza este ejemplo e implementalo en tu objetivo.

Código SQL:
Ver original
  1. SET nocount ON;
  2. -- asumimos que es una tabla de sistema base.
  3. CREATE TABLE #_series(
  4. id INT PRIMARY KEY,
  5. txt nvarchar(24)
  6. );
  7. -- dejamos intencionadamente de insertar el id #4 y #8 para realizar su busqueda.
  8. INSERT INTO #_series VALUES(1, 'Notepad');
  9. INSERT INTO #_series VALUES(2, 'Office 2010');
  10. INSERT INTO #_series VALUES(3, 'Visual Studio 2010');
  11. INSERT INTO #_series VALUES(5, 'Windows 7');
  12. INSERT INTO #_series VALUES(6, 'Jaguar SFAX-25');
  13. INSERT INTO #_series VALUES(7, 'Hyper-V');
  14. INSERT INTO #_series VALUES(9, 'Windows Server 2008 R2');
  15. print 'inicio '+CONVERT(nvarchar(50), getdate(), 121);
  16. -- un vistazo.
  17. SELECT * FROM #_series;
  18. -- de hecho, no usaremos cursores.
  19. DECLARE @n1 INT;
  20. DECLARE @nn INT;
  21. -- conseguir el primer y el ultimo numero de la secuencia
  22. SET @n1 = (SELECT top 1 id FROM #_series ORDER BY id ASC);
  23. SET @nn = (SELECT top 1 id FROM #_series ORDER BY id DESC);
  24. -- crear una tabla temporal para la lista de identificadores generados interpolando el n1 y nn.
  25. CREATE TABLE #_se(
  26. id INT
  27. );
  28. print 'iniciar tabla id '+CONVERT(nvarchar(50), getdate(), 121);
  29. DECLARE @i INT;
  30. SET @i = @n1;
  31. while @i <= @nn
  32. BEGIN
  33. INSERT INTO #_se VALUES (@i);
  34. SET @i = @i + 1;
  35. END
  36. print 'fin tabla id '+CONVERT(nvarchar(50), getdate(), 121);
  37. -- conseguir los ids huecos
  38. SELECT id FROM #_se
  39. WHERE NOT EXISTS(SELECT id FROM #_series WHERE #_series.id = #_se.id)     ---- not in (select id from #_series);
  40. -- limpieza
  41. DROP TABLE #_se;
  42. DROP TABLE #_series;
__________________
MCTS Isaias Islas

Etiquetas: determinar, numeros, secuencias, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:50.