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

Langage SQL Discussion :

Faire l'intersection de 2 colonnes


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut Faire l'intersection de 2 colonnes
    Bonjour,

    j'ai 2 colonnes : [Seq.Open By] et [Seq.Closed By] qui contiennent des chiffres (l'identifiant d'une personne) indiquant les personnes qui ont ouvert et/ou ferme des dossiers.
    Je voudrai savoir comment faire pour avoir le nombre le nombre de dossiers qui ont été ouverts et fermes par chaque personne.

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Seq_Open_By
        ,   COUNT(*)
    FROM    matable
    WHERE   Seq_Open_By = Seq_Closed_By
    GROUP BY Seq_Open_By
    Même si votre SGBD le permet, la norme SQL interdit l'utilisation d'autres caractères que chiffres, lettres et caractère de soulignement dans les noms d'objets.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 126
    Par défaut
    je l'aurais plutôt compris comme celà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    select 	nvl(ouvert.Seq_Open_By, ferme.Seq_Closed_By),
    	ouvert.nb, ferme.nb
    from
    	(SELECT Seq_Open_By, COUNT(*) nb
    	 FROM	matable
    	 GROUP BY Seq_Open_By ) ouvert
    full outer join 
    	(SELECT Seq_Closed_By, COUNT(*) nb
    	 FROM    matable
    	 GROUP BY Seq_Closed_By) ferme
    on ouvert.Seq_Open_By = ferme.Seq_Closed_By

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    747
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 747
    Par défaut
    J'ai un autre soucis.
    J'ai écrit la requete sql suivante pour obtenir les dossiers ouverts d'un coté et les fermés de l'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT NAME AS Nom, COUNT([Seq.Open By]) AS Ouvert, COUNT([Seq.Closed By]) AS Ferme
    FROM MAGIC._SMDBA_.Incident, MAGIC._SMDBA_._PERSONNEL_
    WHERE MAGIC._SMDBA_.Incident.[Seq.Open By]=MAGIC._SMDBA_._PERSONNEL_.SEQUENCE and
    MAGIC._SMDBA_._PERSONNEL_.NAME='HENRY'
    GROUP BY NAME
    J'obtiens :
    Nom Ouvert Ferme
    HENRY 36 32

    Ensuite, j'ai fait dans le cas ouvert & ferme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT Name AS Nom, COUNT(*) AS [Ouvert & Ferme]
    FROM    MAGIC._SMDBA_.Incident, MAGIC._SMDBA_._PERSONNEL_
    WHERE   [Seq.Open By] = [Seq.Closed By] and
    MAGIC._SMDBA_.Incident.[Seq.Open By] = MAGIC._SMDBA_._PERSONNEL_.SEQUENCE and
    MAGIC._SMDBA_._PERSONNEL_.NAME='HENRY'
    GROUP BY Name
    j'obtiens :
    Nom Ouvert & ferme
    HENRY 23

    Lorsque je regroupe tous ça dans la même reqûete, je n'obtiens pas le résultat souhaité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT Name AS Nom, COUNT([Seq.Open By]) AS Ouvert, COUNT([Seq.Closed By]) AS Ferme, COUNT(*) AS [Ouvert & Ferme]
    FROM    MAGIC._SMDBA_.Incident, MAGIC._SMDBA_._PERSONNEL_
    WHERE   [Seq.Open By] = [Seq.Closed By] and
    MAGIC._SMDBA_.Incident.[Seq.Open By] = MAGIC._SMDBA_._PERSONNEL_.SEQUENCE and
    MAGIC._SMDBA_._PERSONNEL_.NAME='HENRY'
    GROUP BY Name
    J'obtiens :
    Nom Ouvert Ferme Ouvert & ferme
    HENRY 23 23 23

Discussions similaires

  1. [XSLT] faire un tableau à 2 colonnes à partir d'une liste ?
    Par Gob0_ dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/08/2006, 11h14
  2. [VB6]Comment faire une ListBox a 2 Colonnes
    Par patoch76 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/05/2006, 22h12
  3. [CR] Faire un groupe sur deux colonnes, voir mon exemple
    Par Etienne51 dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 08/10/2004, 14h02
  4. [C#] Comment faire pour rendre invible une colonne(ListView)
    Par Jfrancois57 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/05/2004, 13h27
  5. Faire le produit de 2 colonnes
    Par toure32 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 07/11/2003, 20h47

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