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

Développement SQL Server Discussion :

Problème avec group by [2005]


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Par défaut Problème avec group by
    Bonjour à tous,
    Je rencontre un souci avec une requete sql suivante et sollicite votre aide pour trouver le résultat escompté

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select B.Id_depart,year(A.Heure_BIE) as annee,count(A.id_bie) as nombre from depart B 
    left outer join Liste A on B.id_depart=A.id_depart and A.id_nature='1' 
    group by B.Id_depart,year(Heure_bie)

    Table depart_HTA
    id_depart lib_depart
    1 Paris
    2 Bordeaux
    3 Marseille
    4 Lyon

    Données Table liste
    id_bie id_depart annee
    1 1 2016
    2 2 2016
    3 2 2017
    4 2 2016


    resultat souhaité
    Lib_depart annee nombre
    Paris 2016 1
    Paris 2017 0
    Bordeaux 2016 1
    Bordeaux 2017 1
    Marseille 2016 0
    Marseille 2017 0
    Lyon 2016 1
    Lyon 2017 0

    Or la requete me donne les résultats suivants :
    Lib_depart annee nombre
    Paris 2016 1
    Bordeaux 2016 1
    Bordeaux 2017 1
    Marseille (null) 0
    Marseille (null) 0
    Lyon 2016 1

    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Et on devine votre problème ainsi que le résultat attendu ?

  3. #3
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Un truc comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT B.Id_depart,
           an.annee AS annee,
           COUNT(A.id_bie) AS nombre
    FROM depart B
    CROSS JOIN (SELECT DISTINCT  YEAR(A.Heure_BIE) AS annee FROM Liste) AS An
         LEFT OUTER JOIN Liste A ON B.id_depart = A.id_depart
    					   AND YEAR(A.Heure_BIE) = An.annee
                                    AND A.id_nature = '1'
    GROUP BY B.Id_depart,
             YEAR(Heure_bie);

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mars 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Mars 2016
    Messages : 58
    Par défaut
    Bonjour,

    En essayant de deviner aussi et en supposant que la derniere ligne du jeu d'essai est fausse 4 2 2016 --> 4 4 2016 (sinon il y a un doublon avec la ligne 2 ??), ci dessous une proposition alternative

    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
     
    ;WITH depart (id_depart, lib_depart) as 
    (select 1 , 'Paris' UNION ALL
    select 2 , 'Bordeaux' UNION ALL
    select 3 , 'Marseille' UNION ALL
    select 4 , 'Lyon'), 
    liste(id_bie, id_depart, Heure_BIE) as (
    select 1 , 1, 2016 UNION ALL
    select 2 , 2, 2016 UNION ALL
    select 3 , 2, 2017 UNION ALL
    select 4 , 4, 2016)
     
    select A.lib_depart, B.Heure_BIE, case WHEN C.Heure_BIE IS NOT NULL THEN 1 ELSE 0 END from depart A
    cross join (select distinct Heure_BIE from liste) B
    left join liste C on C.id_depart = A.id_depart and C.Heure_BIE = B.Heure_BIE
    ORDER BY A.lib_depart, B.Heure_BIE

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Par défaut
    Merci pour vos propositions et désolé pour le manque de clarté de ma demande initiale la requête de mr aieeeuuuuu correspond tout à fait a ce que je recherche. En vous remerciant pour la rapidité de l’aide.
    A bientot

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

Discussions similaires

  1. problème avec GROUP BY
    Par benjisan dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/06/2007, 11h48
  2. [XI] problème avec groupe sur un champ trié par origine ?
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 11/04/2007, 15h31
  3. Problème avec GROUP BY
    Par Korskarn dans le forum Langage SQL
    Réponses: 6
    Dernier message: 07/03/2006, 14h35
  4. Problème avec group by...
    Par gdido dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/07/2005, 09h34
  5. [débutant] problème avec Group by
    Par Amenofis dans le forum Débuter
    Réponses: 5
    Dernier message: 25/05/2005, 09h57

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