Disons que je le tableau suivant avec trois colonnes:Puis-je utiliser SQL pour trouver les numéros manquants dans l'exemple de tableau ci-dessous?
id | start_block | end_block
-----------------------------
01 | 00000000001 | 00000000005
02 | 00000000006 | 00000000011
03 | 00000000012 | 00000000018
04 | 00000000025 | 00000000031
05 | 00000000032 | 00000000043
Chaque ligne était un « Start Block » et un « End Block ». Si les données étaient parfaites, chaque bloc de départ serait un de plus que le bloc de fin précédent. Donc, pour id de rangée == 02, le bloc de départ est 6 tandis que le bloc de fin pour la ligne avant lui 5.
J'ai besoin d'interroger ces données (il s'agit de dizaines de milliers de lignes) et trouver toutes les lignes manquantes. Selon mes données d'exemple, il devrait y avoir une ligne entre 03 et 04 qui a un bloc de départ de 19 et un bloc de fin de 24.
J'essaye de construire un rapport dans JSP pour réconcilier ces données et trouver les lignes manquantes. La façon laide de le faire serait de tirer l'ensemble d'enregistrements dans un tableau et faire quelque chose comme sur chaque ligne:
if ((arry(i,1) + 1) != (arry(i+1),1)({
print("Bad Row!\n");
}
Mais, je voudrais vraiment pouvoir interroger directement le jeu d'enregistrements et retourner ce que je dois . Est-ce possible? Si non, quelqu'un pourrait-il me diriger dans la bonne direction pour créer un proc stocké qui fait ce dont j'ai besoin?
Je suppose que je devrais mentionner que j'utilise Microsoft SQL Server 2005. – messick
Que sont les types de données de colonne? –
id est int, les deux autres sont des chaînes. – messick