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 :

Supprimer lignes successives ayant un champs identique


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 19
    Par défaut Supprimer lignes successives ayant un champs identique
    Bonjour tout le monde, je suis débutant en SQL et je rencontre une difficulté bloquante et je ne trouve aucune solution.

    Donc je possède une table et j'aimerai faire un SELECT pour la parcourir et éliminer les lignes successives ayant le même "statut" afin de garder seulement la dernière occurrence. Ainsi si j'ai plusieurs ligne qui se suivent avant le même statut je garderai juste la dernière et ainsi de suite.

    Pour mieux me faire comprendre, je vous donne l'exemple suivant :

    Code autre : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Ma table                                                 Résultat désiré
    idLigne | id | statut                                    idLigne | id | statut  
       L1     1      A                                          L2     1      A
       L2     1      A                                          L6     1      B
       L3     1      B                                          L7     1      A
       L4     1      B                    ====>                 L8     1      B
       L5     1      B
       L6     1      B
       L7     1      A
       L8     1      B


    Merci d'avance toute aide sera la bienvenue.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 118
    Par défaut
    Bonjour,

    Plusieurs solution, tout dépend du contexte.

    Tu crées une table à l'identique tu y mets les données sans doublons tu supprimes l'autre table et tu renommes la table créée. C'est assez bourrin, à ne pas faire en production ou alors hors activité sur la base et après une sauvegarde de la base. Ca dépend également des contraintes et autre sur ta table.

    A partir de SQL 2005, tu peux utiliser les fonctions de partitionnement (ex: ROW_NUMBER). Tu peux ajouter une colonne à la table existante, tu calcules le ROW_NUMBER sur chaque ligne et tu supprimes ensuite les lignes qui ont une valeur supérieur à 1 dans cette nouvelle colonne.

    Ce ne sont que quelques pistes, tout dépend vraiment du contexte, de la structure complète de la table, peut être que tu as une colonne date etc...

  3. #3
    Membre averti
    Inscrit en
    Mars 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 19
    Par défaut
    Bonjour merci pour tes propositions ça m'a données une idée, j'ai finalement opté sur l'utilisation de ROW_NUMBER plutôt que la création d'une nouvelle table

Discussions similaires

  1. Extraire les enregistrements ayant un champ identique
    Par laraki.fissel dans le forum Requêtes
    Réponses: 6
    Dernier message: 05/05/2014, 14h25
  2. Supprimer deux lignes successives non identiques
    Par korospoukine dans le forum Langage SQL
    Réponses: 14
    Dernier message: 29/01/2013, 12h48
  3. Réponses: 4
    Dernier message: 08/05/2012, 10h58
  4. Réponses: 4
    Dernier message: 21/08/2006, 19h05
  5. plusieurs champs identiques en ligne
    Par viviking dans le forum Langage SQL
    Réponses: 12
    Dernier message: 18/06/2004, 11h25

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