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.