IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Recherche des bornes de plages de valeurs consécutives


Sujet :

MS SQL Server

  1. #1
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut Recherche des bornes de plages de valeurs consécutives
    Bonjour,

    Considérons la table suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DECLARE @t TABLE
    (
    	ID INT,
    	indice TINYINT
    )
     
    INSERT INTO @t VALUES (7636, 9)
    INSERT INTO @t VALUES (7636, 10)
    INSERT INTO @t VALUES (7636, 11)
    INSERT INTO @t VALUES (7636, 14)
    Je cherche à obtenir le résultat suivant

    7636 8 12
    7636 13 15

    J'ai commencé à écrire la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    ;WITH
    	CTE_INDICES AS
    	(
    			SELECT ID,
    				MIN(indice) - 1 AS nIndiceMin,
    				MAX(indice) + 1 AS nIndiceMax
    		FROM @t
    		GROUP BY ID
    	),
    	CTE_PLAGES_COMPLETES AS
    	(
    			SELECT ID,
    					nIndiceMin,
    					nIndiceMax
    			FROM CTE_INDICES
    		UNION ALL
    			SELECT PC.ID,
    					PC.nIndiceMin + 1,
    					PC.nIndiceMax
    			FROM CTE_PLAGES_COMPLETES AS PC
    			JOIN CTE_INDICES AS I
    				ON PC.ID = I.ID
    				AND PC.nIndiceMin < I.nIndiceMax
    	),
    	CTE_FINAL AS
    	(
    		SELECT PC.ID,
    				PC.nIndiceMin,
    				T.indice
    		FROM CTE_PLAGES_COMPLETES AS PC
    		LEFT JOIN @t AS T
    			ON PC.ID = T.ID
    			AND PC.nIndiceMin = T.indice
    	)
    SELECT *
    FROM CTE_FINAL
    Qui me procure :

    ID nIndiceMin indice
    7636 8 NULL
    7636 9 9
    7636 10 10
    7636 11 11
    7636 12 NULL
    7636 13 NULL
    7636 14 14
    7636 15 NULL

    Mais je ne vois pas comment obtenir ce que je recherche ...

    Pourriez-vous m'aider ?

    @++

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    J'ai trouvé la solution, je vais en faire un billet

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Recherche des valeurs manquantes
    Par merocean dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 30/06/2009, 23h23
  2. Réponses: 6
    Dernier message: 15/11/2008, 16h06
  3. Recherche de plage de valeurs dans liste de valeurs
    Par klowba dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 13/06/2007, 14h02
  4. [VBA-E] rechercher des valeurs?
    Par godSP2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2007, 20h55
  5. Recherche dans plage de valeur :
    Par lafouine dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/04/2005, 11h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo