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 :

GROUP BY mais comment ?


Sujet :

MS SQL Server

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut GROUP BY mais comment ?
    Bonjour à tous,


    Soit un jeu d'essai composé des 8 lignes ci dessous

    BRNUMDOC - BRUTIL - BRNUMPIECE

    7J02414FN - 000058 - 000274
    7J02414FN - 000058 - 000274
    7J02414FN - 000058 - 000274
    7J02414FN - 000058 - 000274
    7J02414FN - 000087 - 000578
    7J02414FN - 000087 - 000578
    7J02414FN - 000087 - 000578
    7J02414FN - 000087 - 000578

    Quelle doit être la requête pour obtenir comme résultat le BRNUMDOC et le count(*) du couple distinct BRUTIL+BRNUMPIECE. Soit :

    7J02414FN - 2

    La requête suivante me permet de trouver les 2 lignes :

    select brnumdoc, brutil, brnumpiece from brfn0710 group by brnumdoc, brutil, brnumpiece

    Résultat :

    7J02414FN - 000058 - 000274
    7J02414FN - 000087 - 000578

    Mais comment obtenir le count(*) sur BRNUMDOC ???

    J'espère avoir été assez clair mais pas évident...

    La requête suivante me retourne : Syntaxe incorrecte vers le mot clé 'group'

    select brnumdoc,count(*) from (select distinct brnumdoc, brutil, brnumpiece from brfn0710) group by brnumdoc,brutil,brnumpiece


    Cordialement et d'avance merci...

    Laurent

  2. #2
    Membre actif
    Inscrit en
    Avril 2005
    Messages
    644
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 644
    Points : 254
    Points
    254
    Par défaut
    select brnumdoc,count(*) from (select distinct brnumdoc, brutil, brnumpiece from brfn0710) group by brnumdoc,brutil,brnumpiece
    t 'as essayé en mettant la parenthese en fin de ligne

    select brnumdoc,count(*) from (select distinct brnumdoc, brutil, brnumpiece from brfn0710 group by brnumdoc,brutil,brnumpiece)

    l'erreur sur ton "groupe by" vient du fait que le select auquel "il" appartient n'a pas les colonnes que tu lui indiques...enfin je crois...(cf Dubosc...)

    bon courage

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par geof Voir le message
    t 'as essayé en mettant la parenthese en fin de ligne

    select brnumdoc,count(*) from (select distinct brnumdoc, brutil, brnumpiece from brfn0710 group by brnumdoc,brutil,brnumpiece)

    l'erreur sur ton "groupe by" vient du fait que le select auquel "il" appartient n'a pas les colonnes que tu lui indiques...enfin je crois...(cf Dubosc...)

    bon courage
    Merci Geof, mais ne marche pas non plus...

    le GROUP BY doit bient porter sur le premier SELECT

    D'autres propositions ?

  4. #4
    Membre actif
    Inscrit en
    Avril 2005
    Messages
    644
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 644
    Points : 254
    Points
    254
    Par défaut
    Citation Envoyé par iota47 Voir le message
    Merci Geof, mais ne marche pas non plus...


    le GROUP BY doit bient porter sur le premier SELECT

    D'autres propositions ?
    excuse j'avais vu "ORDER BY"...

    Nouvelle proposition:

    ton premier "SELECT" se référe qu'à "brnuldoc", et tu lui dis de grouper les resultats sur "brnumdoc, brutil, brnumpiece".
    Ca me parait etrange...

    t'as dejà essayé ca? j'imagine que oui...mais au cas où...
    SELECT brnumdoc, brutil, brnumpiece, Count(*) AS Compteur
    FROM brfn0710
    GROUP BY brnumdoc, brutil, brnumpiece
    ORDER BY brnumdoc;

    evidemment t'as aussi les colonnes "brutil, brnumpiece", mais au moins elle fonctionne (enfin je crois...)

    tschuss

  5. #5
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 040
    Points : 23 795
    Points
    23 795
    Par défaut
    Citation Envoyé par iota47 Voir le message
    select brnumdoc,count(*) from (select distinct brnumdoc, brutil, brnumpiece from brfn0710) group by brnumdoc,brutil,brnumpiece
    Je pense qu'il manque juste un "as T" derrière la parenthèse fermante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select brnumdoc,count(*)
    from (select distinct brnumdoc, brutil, brnumpiece from brfn0710) as T 
    group by brnumdoc,brutil,brnumpiece
    Je n'ai pas testé et je ne sais pas si ça renvoit le résultat que tu souhaites, mais au moins ça devrait éliminer ton message d'erreur

    ced

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Résolution...
    OK, merci CED, ça marche quant à la syntaxe en rajoutant le AS

    Juste une correction à effectuer sur le GROUP BY à effectuer uniquement sur le BRNUMDOC puisque la sous-requête effectue le DISTINCT sur BRUTIL et BRNUMPIECE

    La requête exacte est :

    SELECT brnumdoc,count(*)
    FROM (SELECT DISTINCT brnumdoc, brutil, brnumpiece FROM brfn0710) AS T
    GROUP BY brnumdoc
    ORDER BY brnumdoc

    Encore merci et bonne journée à tous

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

Discussions similaires

  1. [XSLT] - Modèle réutilisable... mais comment l'utiliser.
    Par jacquesh dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/02/2006, 11h07
  2. un simple break; mais comment ??
    Par kmaniche dans le forum C++
    Réponses: 2
    Dernier message: 14/02/2006, 22h33
  3. Réponses: 4
    Dernier message: 13/12/2005, 18h14
  4. selection avec group by mais ne garder que ...
    Par Larson dans le forum Langage SQL
    Réponses: 13
    Dernier message: 22/06/2005, 17h23
  5. HomeDB, oui mais comment ?
    Par Gregouz dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 27/10/2004, 15h27

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