J'ai une table (T1) avec une colonne (C1) avec les valeurs ci-dessous 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 Réponses :
Vous pouvez utiliser la requête suivante. Je l'ai testé avec SQL Server, mais je pense que cela fonctionnera sans modifications dans Oracle: sortie p>
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>
1 3
5 8
9 13
15 17
18 23
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.