Falta el Id de la tabla mostrada en dos columnas.
Quiero obtener la lista de números de ID que faltan en una tabla.
;CON Missing (missnum, maxid)
AS
(
SELECT 1 AS missnum, (select max(id) from MYTABLE)
UNION ALL
SELECT missnum + 1, maxid FROM Missing
WHERE missnum < maxid
)
SELECT missnum
FROM Missing
LEFT OUTER JOIN MYTABLE on MYTABLE.id = Missing.missnum
WHERE MYTABLE.id is NULL
OPTION (MAXRECURSION 0);
Lista de números de ID faltantes:
id |
---|
2 |
3 |
4 |
5 |
7 |
8 |
9 |
Pero no quiero que la lista muestre cada número individual – solo una lista con dos columnas como:
Mi salida debería ser:
desde | hasta |
---|---|
2 | 5 |
7 | 9 |
Ahora puedo ver que mi pregunta no fue lo suficientemente clara.
Tengo una larga lista de miles de filas de números;
2,3,4 … 36
401,402,403 … 807
1234,1235 … 1240
Me gustaría presentarlos como;
desde | hasta |
---|---|
2 | 36 |
401 | 807 |
1234 | 1240 |
davy.ai
Para obtener la salida deseada, se puede modificar la consulta original de la siguiente manera:
Esta consulta utiliza un enfoque diferente para encontrar los números de ID faltantes. Primero identifica el inicio y fin de cada rango faltante (es decir, el primer y último número faltante en una secuencia continua), y luego selecciona solo aquellos rangos que tienen un ID final (es decir, no son el último rango faltante).
La salida tendrá el formato deseado con dos columnas que representan el inicio y el fin de cada rango faltante.