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 :

Trouver les différences dans une table [2008]


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Points : 111
    Points
    111
    Par défaut Trouver les différences dans une table
    Bonjour,

    Voici ce que j'essaye de faire depuis des heures, sans succès..:

    Dans une table, j'ai une 100aine de lignes qui sont les résultats de mes différents contrôles. Voici un exemple concret qui illustre beaucoup mieux qu'une longue explication:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Qte / Nom / Systeme
    1 / Jean / Sys1
    1 / Pierre / Sys1
    2 / Paul / Sys1
    3 / Jacques / Sys1
    1 / Jean / Sys2
    2 / Pierre / Sys2
    2 / Paul / Sys2
    1 / Luc / Sys2
    On remarque que entre le Sys1 et le Sys2, Jean et Paul ont effectué la même quantité de travail. Alors que Pierre, n'a pas fourni la même quantité entre les deux systèmes. Il y a aussi Jacques qui a fournit un travail sur le Sys1 mais pas le Sys2 et Luc qui a fournit un travail sur le Sys2 et pas le Sys1.

    C'est ce genre de résultat que je veux voir apparaitre, mais comment puis-je m'y prendre? Je tourne en rond et je ne trouve pas..

    Qqun aurait une idée?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 93
    Points : 169
    Points
    169
    Par défaut
    Salut,

    Un début de piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT MIN(Systeme), Nom, Qte
    FROM TA_TABLE
    GROUP BY Nom, Qte
    HAVING COUNT(*) <> 2
    Cette requête te ramènera toutes les lignes qui ne sont pas identiques entre Sys1 et Sys2...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2002
    Messages : 332
    Points : 502
    Points
    502
    Par défaut
    Tu veux donc représenter les données de façon matricielle, en transformant les valeurs 'sys' en colonnes.

    Si les valeurs 'sys' sont statiques alors tu n'as qu'à joindre les ensembles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT *
    FROM 
    (
    SELECT Qte, Nom
    FROM MaTable
    WHERE Systeme = 'Sys1'
    ) As Sys1 LEFT JOIN
    (
    SELECT Qte, Nom
    FROM MaTable
    WHERE Systeme = 'Sys2'
    ) As Sys2 ON Sys1.Nom = Sys2.Nom
    AND Sys1.Qte <> Sys2.Qte
    En assumant bien sûr que tous les noms ont au moins une valeur dans le Sys1.

    Si par contre la présence n'est pas assurée dans au moins un des systèmes alors c'est toujours possible mais un peu différent.

    Aussi, si le nombre de systèmes n'est pas statique, alors il faudrait effectuer un pivot.

  4. #4
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Points : 111
    Points
    111
    Par défaut
    Et moi qui étais parti sur des doubles curseurs de 50-60 lignes... pfff...

    C'est exactement ce que je voulais faire.. merci !!

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

Discussions similaires

  1. Trouver les indexes dans une table d'une base Access
    Par papyxy dans le forum VBScript
    Réponses: 0
    Dernier message: 03/10/2014, 09h05
  2. Réponses: 14
    Dernier message: 18/02/2014, 17h27
  3. Réponses: 5
    Dernier message: 06/11/2007, 13h58
  4. Réponses: 5
    Dernier message: 25/07/2005, 14h03
  5. trouver et remplacer dans une table paradox
    Par Yepazix dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/09/2004, 02h19

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