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

Access Discussion :

Compter dans une requête Analyse Croisée


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 166
    Points
    166
    Par défaut Compter dans une requête Analyse Croisée
    Bonjour à toutes et tous !

    Je fais une requête Analyse Croisée dont le résultat ressemble à ça :

    Réf---Site1---Site2---Site3---Site4
    001----1-------1------------------
    002------------1------------------
    003----1----------------2-------1-
    004----2-------1--------1---------
    etc...



    Je souhaite compter non pas le nombre d'enregistrement, mais le nombre de "cellules" non vides pour chaque référence.

    Dans mon exemple je souhaiterai obtenir :

    Réf--Cpte---Site1---Site2---Site3---Site4
    001---2--------1-------1------------------
    002---1----------------1------------------
    003---3--------1-------------2-------1----
    004---3--------2-------1-----1------------
    etc...


    Ensuite je comparerai les valeurs de chaque site pour chaque réf et je dois faire ressortir la ligne si une valeur est différente d'une autre sur la même ligne.

    Quelle fonction puis-je utiliser pour faire ce compte en entête de ligne ?

    Merci par avance pour l'aide que vous pourrez m'apporter !

    JMarc

  2. #2
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    Si tu ajoute un count() dans ta requête pour voir ce que ça donne.

    A+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 166
    Points
    166
    Par défaut
    Merci de ta réponse Soltani, mais j'ai oublié de préciser quelque chose, la référence n'est pas une clé primaire, c'est à dire qu'elle peut exister plusieurs fois dans la table source (Pour info : ne parlons pas de conception de base, ce sont des données provenant de Baan que je dois analyser et sortir sous forme de tableaux de bord...).

    Donc, le count ne fera par ressortir la bonne valeur.
    En fait, il faudra compter les "Site1, Site2..." mais Access ne compte pas les entetes de colonnes.

    Merci d'avance,

    JMarc

  4. #4
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    Peut tu donner ta requête pour voir.

    A+

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 166
    Points
    166
    Par défaut
    La voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    TRANSFORM Max(T_Baan.Contrôle) AS MaxDeContrôle
    SELECT T_Baan.Réf, Count(T_Baan.Contrôle) AS [Cpte]
    FROM T_Baan
    GROUP BY T_Baan.Réf
    PIVOT T_Baan.[Site];
    J'espère ne pas avoir fait de faute dans la transcription car j'avais adapté les termes pour plus de clarté dans mon exemple...

    Merci

    JMarc

  6. #6
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    Je ne vois pas ou est le problème? j'ai essayer avec les données suivantes:
    Ref----------Site----------Contrôle
    Ref1---------site1---------1
    Ref1---------site3---------1
    Ref2---------Site1---------2
    Ref2---------site2---------

    la requête renvoie :
    Ref------Cpte-------Site1--------Site2-------Site3
    Ref1-----2----------1-------------------------1
    Ref2-----1----------2--------------------------

    A+

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 166
    Points
    166
    Par défaut
    Oui, mais le problème, c'est que, dans la table source je peux avoir 5 ou 20 fois la ligne :
    Ref1---------site3---------1

    le Cpte affichera 5, normal, mais moi je veux qu'il affiche :
    Ref------Cpte-------Site1--------Site2-------Site3
    Ref1-----2----------1-------------------------1

  8. #8
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    essaie ce code :

    TRANSFORM Max(T_Baan.contrôle) AS MaxDeContrôle
    SELECT T_Baan.réf AS Expr1, Count(T_Baan.contrôle) AS Cpte
    FROM [select distinct * from T_Baan]. AS [%$##@_Alias]
    GROUP BY T_Baan.réf
    PIVOT T_Baan.site;

    A+

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 166
    Points
    166
    Par défaut
    Soltani, merci pour la réponse, mais non, malheureusement, j'ai toujours mes paquets à 180 ou 300 lignes... qui apparaissent dans la colonne Cpte.

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    TRANSFORM Count([matable].[site]) AS CompteDesite
    SELECT [matable].[ref],[total]
    FROM matable INNER JOIN 
    (SELECT r.ref, Count(r.site) AS total
    FROM [SELECT  DISTINCT ref, site from matable]. AS r
    GROUP BY r.ref) as v
    ON [matable].[ref]=v.[ref]
    GROUP BY [matable].[ref], total
    PIVOT [matable].[site];
    Elle est pas belle la vie ?

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 166
    Points
    166
    Par défaut
    Bonjour Random et merci !

    Je sens que je me rapproche du but, mais comme je ne comprends pas tout ton code... j'y passe un peu de temps...

    En fait, "v" c'est une table virtuelle si je comprends bien ? Quel est son rôle ? et "r"... lui je le vois plus dans QBE...

    Sinon, mon pb est que j'ai les valeurs de contrôle en tête de colonne et non les sites... je cherche et vous tiens au courant !

    Merci encore,

    JMarc

  12. #12
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    bonjour,

    j'ai essayer avec un jeu d'essai suivant :
    Ref----------Site----------Contrôle
    Ref1---------site1---------1
    Ref1---------site3---------1
    Ref2---------Site1---------2
    Ref2---------site2---------
    Ref3---------site1---------1
    Ref3---------site2---------1
    Ref3---------site2---------1
    Ref3---------site2---------1

    Ici Ref3 et site2 se repete plusieurs fois


    la requête renvoie :
    Ref------Cpte-------Site1--------Site2-------Site3
    Ref1-----2----------1-------------------------1
    Ref2-----1----------2--------------------------
    Ref3-----2----------1------------1-------------

    La requête renvoie bien 2 et non 4 pour Ref3, donc la requête fonctionne correctement. Le select distinct élimine les doublons Ref3 et site2 pour n'en laisser qu'un a moins que tu as d'autres colonnes autre que l'exemple de mon jeux d'essai.

    A+

  13. #13
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    r et v sont des sous requêtes
    le préfixage permet de savoir de quoi on parle dans les niveaux supérieurs
    Elle est pas belle la vie ?

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 166
    Points
    166
    Par défaut
    Effectivement Soltani, ta requête fonctionne sur ton exemple.
    Il faut que je regarde de plus près ma transcription, j'ai voulu simplifier pour l'explication et... je me suis (nous ai...) compliqué la vie.

    Je regarde et vous tiens au courant.

    Merci encore à tous !

    JMarc

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 166
    Points
    166
    Par défaut
    Bonjour,

    Soltani, oui, ta requete fonctionne, mes problèmes viennent du fait que j'ai d'autres champs que je n'ai pas mis dans l'exemple et je pense que le SELECT* m'a joué des tours. A force, je commence à y voir plus clair dans le SQL, et quand j'aurai moins la pression pour terminer les travaux en cours, je vais m'y mettre pour de bon !!!

    Random, merci pour tes explications, je ne les avais pas vu hier soir, nous avons dû valider nos messages à peu près en même temps !

    Merci à tous les deux, bonne journée !

    JMarc

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

Discussions similaires

  1. [AC-2007] Champ calculé comme valeur dans une requête analyses croisées avec une seule table
    Par The old fool dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/10/2014, 10h15
  2. [AC-2013] Valeur null dans une requête Analyse croisée
    Par petchy dans le forum Access
    Réponses: 5
    Dernier message: 07/06/2014, 11h57
  3. Ordre de tri par mois et années dans une requête analyse croisée
    Par garsflo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/11/2007, 21h11
  4. Réponses: 0
    Dernier message: 20/09/2007, 15h14
  5. Critère Date dans une requête analyse croisée
    Par Lingo dans le forum Access
    Réponses: 7
    Dernier message: 05/10/2006, 14h43

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