0
votes

Trouver les points de départ et de fin d'une séquence

J'ai une table (T1) avec une colonne (C1) avec les valeurs ci-dessous xxx pré>

Je veux que la sortie imprime les séquences continues avec des points de début et de fin comme ci-dessous.

1-3
5-6
8-10


3 commentaires

Si vous pouviez fournir la logique derrière la sortie qui serait utile


La séquence commence par la valeur 1 et les ruptures après 3 (4 manquantes). Donc, 1 et 3 sont mon point de départ et de fin. La séquence commence ensuite à 5 et les pauses après 6 (7 manquantes). Donc, 5 à 6 sont mes points de départ et de fin. Ça va comme ça


Définissez la balise de la base de données que vous utilisez.


3 Réponses :


3
votes

Vous pouvez utiliser la requête suivante. Je l'ai testé avec SQL Server, mais je pense que cela fonctionnera sans modifications dans Oracle: xxx

sortie xxx


0 commentaires

4
votes

Oracle: Exemples de données d'abord, tandis que le code que vous avez vraiment besoin commence à la ligne n ° 11.

SQL> with t1 (c1) as
  2    (select 1 from dual union all
  3     select 2 from dual union all
  4     select 3 from dual union all
  5     select 5 from dual union all
  6     select 6 from dual union all
  7     select 8 from dual union all
  8     select 9 from dual union all
  9     select 10 from dual
 10    )
 11  select min(c1), max(c1)
 12  from (select c1, c1 - row_number() over (order by c1) rn
 13        from t1
 14       )
 15  group by rn
 16  order by rn;

   MIN(C1)    MAX(C1)
---------- ----------
         1          3
         5          6
         8         10

SQL>


0 commentaires

0
votes
         1          3
         5          8
         9         13
        15         17
        18         23


0 commentaires