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

Requêtes MySQL Discussion :

DISTINCT d'un champ combiné avec CASE WHEN


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Points : 131
    Points
    131
    Par défaut DISTINCT d'un champ combiné avec CASE WHEN
    Bonjour,

    j'aurais encore besoin d'un petit coup de pouce pour regrouper 3 requêtes, les voici :
    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
    SELECT COUNT(DISTINCT ENTETE) AS arriv_sda
      FROM ERREUR INNER JOIN FIC
              ON ERREUR.COD = FIC.COD
     WHERE     ENTETE <> ''
           AND DAT > '2010-04-01 00:00:00'
           AND DAT < '2010-04-30 00:00:00'
           AND ERREUR.COD = 'EBK';
     
    SELECT COUNT(DISTINCT ENTETE) AS inst_sda
      FROM ERREUR INNER JOIN FIC
              ON ERREUR.COD = FIC.COD
     WHERE     ENTETE <> ''
           AND DAT > '2010-04-01 00:00:00'
           AND DAT < '2010-04-30 00:00:00'
           AND ERREUR.COD = 'EBK'
           AND ERREUR.DAT_RES IS NULL;
     
    SELECT COUNT(DISTINCT ENTETE) AS trt_sda
      FROM ERREUR INNER JOIN FIC
              ON ERREUR.COD = FIC.COD
     WHERE     ENTETE <> ''
           AND DAT > '2010-04-01 00:00:00'
           AND DAT < '2010-04-30 00:00:00'
           AND ERREUR.COD = 'EBK'
           AND ERREUR.DAT_TRT IS NOT NULL
           AND ERREUR.DAT_RES IS NULL;
    j'ai essayé ceci :
    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
    SELECT COUNT( * ) AS ARRIV_SDA,
             COUNT(CASE WHEN ERREUR.DAT_RES IS NULL THEN 1 END)
                AS INST_SDA,
             COUNT(CASE
                      WHEN ERREUR.DAT_TRT IS NOT NULL
                           AND ERREUR.DAT_RES IS NULL
                      THEN
                         1
                   END)
                AS TRT_SDA
        FROM ERREUR INNER JOIN FIC
                ON ERREUR.COD = FIC.COD
       WHERE     ENTETE <> ''
             AND DAT > '2010-04-01 00:00:00'
             AND DAT < '2010-04-30 00:00:00'
             AND COD = 'EBK';
    mais évidemment ça ne me donne pas les bons résultats car mes 3 requêtes font un COUNT(DISTINCT ...) d'un champ en particulier.

    quelqu'un a une idée ? Merci !

  2. #2
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 188
    Points : 131
    Points
    131
    Par défaut
    Bon bein on a trouvé la réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT COUNT(DISTINCT ENTETE) AS ARRIV_SDA,
           COUNT(DISTINCT CASE WHEN ERREUR.DAT_RES IS NULL THEN ENTETE END) AS INST_SDA,
           COUNT(DISTINCT CASE WHEN ERREUR.DAT_TRT IS NOT NULL
                               AND ERREUR.DAT_RES IS NULL THEN ENTETE END) AS TRT_SDA
      FROM ERREUR INNER JOIN FIC
              ON ERREUR.COD = FIC.COD
     WHERE     ENTETE <> ''
           AND DAT > '2010-04-01 00:00:00'
           AND DAT < '2010-04-30 00:00:00'
           AND COD = 'EBK';
    J'espère que ça servira à quelqu'un d'autre

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

Discussions similaires

  1. [SQL SERVER 2005] INSERT avec CASE WHEN
    Par djilos dans le forum Développement
    Réponses: 5
    Dernier message: 16/04/2010, 15h46
  2. Requête avec Case When ..
    Par Passarinho44 dans le forum Langage SQL
    Réponses: 20
    Dernier message: 08/08/2008, 17h03
  3. Réponses: 5
    Dernier message: 26/02/2008, 13h42
  4. Réponses: 1
    Dernier message: 01/08/2006, 18h01
  5. Pb avec case when !
    Par Brice Yao dans le forum Langage SQL
    Réponses: 11
    Dernier message: 05/08/2005, 09h20

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