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 :

En tetes de requete analyse croisée par intervalles


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    credit manager
    Inscrit en
    Mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : credit manager

    Informations forums :
    Inscription : Mars 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut En tetes de requete analyse croisée par intervalles
    Bonjour à tous,
    Je viens vers vous car je ne trouve pas solution à mon problème.
    Je crée une balance agée client sous access. J'ai réussi à obtenir toutes les données nécessaires mais je n'arrive pas à regrouper mes résultats en 3 ou 4 colonnes.
    Mon but:
    Lignes:Clients (ok)
    Colonnes: Différence entre date échéance et aujourd'hui (en nombre de jours) (ok)
    Valeur: somme montant TTC

    Problème: j'obtiens donc autant de colonnes qu'il n'y a de résultats (date échéance-aujourd'hui), je souhaite les regrouper en colonne intervalle
    Colonne1:<-30
    colonne2:entre -30 et 0
    Colonne3: >0

    Je ne trouve pas de solution à ce problème qui me semble pourtant basique en terme de lecture de données

  2. #2
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Maxenzo76,

    Le nombre de colonnes étant fixes, tu peux créer tes n colonnes et passer tes valeurs en vérifiant les plages grâce à la fonction iif

    http://office.microsoft.com/fr-fr/ac...001228853.aspx

    Cela pourrait donc dans ton cas ressembler à ceci (à adapter bien évidemment en fonction du nom de ta table et de tes champs)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Clients.Nom, IIf([NombreJours]<-30,[Montant],0) AS [Inferieur_-30], IIf([NombreJours]>-30 And [NombreJours]<=0,[Montant],0) AS [Entre>-30_<0], IIf([NombreJours]>0,[Montant],0) AS [Superieur>0]
    FROM Clients;
    JimBoLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    credit manager
    Inscrit en
    Mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : credit manager

    Informations forums :
    Inscription : Mars 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Avec le code adapté j'obtiens cela, mais il m'indique "reference non valide dans SELECT">>je patoge...

    TRANSFORM Sum([Factures encours].MontantTTC) AS SommeDeMontantTTC
    SELECT [Factures encours].Client, IIf([Factures encours].ech<-30,[SommeDeMontantTTC],0) AS [Inferieur_-30], IIf([Factures encours].ech>-30 And [Factures encours].ech<=0,[SommeDeMontantTTC],0) AS [Entre>-30_<0], IIf([Factures encours].ech>0,[SommeDeMontantTTC],0) AS [Superieur>0]
    FROM [Factures encours]
    GROUP BY [Factures encours].Client
    PIVOT [Factures encours].ech;


    CODE D'ORIGINE:

    TRANSFORM Sum([Factures encours].MontantTTC) AS SommeDeMontantTTC
    SELECT [Factures encours].Client, Sum([Factures encours].MontantTTC) AS [Total de MontantTTC]
    FROM [Factures encours]
    GROUP BY [Factures encours].Client
    PIVOT [Factures encours].ech;

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    credit manager
    Inscrit en
    Mars 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : credit manager

    Informations forums :
    Inscription : Mars 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Après quelques tentatives, j'ai réussi à faire ce code:

    SELECT [Factures encours].Client, IIf([Factures encours].ech<-30,Sum([Factures encours].MontantTTC),0) AS [Inferieur_-30], IIf([Factures encours].ech>-30 And [Factures encours].ech<=0,Sum([Factures encours].MontantTTC),0) AS [Entre>-30_<0], IIf([Factures encours].ech>0,Sum([Factures encours].MontantTTC),0) AS [Superieur>0]

    Mais avec ce code, les colonnes souhaitées apparaissent, mais le partage ne se fait pas correctement.
    En effet, dès que Iff trouve une condition vrai, elle fait la somme des toutes les factures du client, au lieu de faire le partage des montants de factures entre les 3 colonnes selon leur échéance

  5. #5
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    maxenzo76,

    Oui effectivement, mais le message initial ne faisait pas état d'une liste d'échéances.

    Donc tu as presque ta solution en main

    1. Tu effectues ta requête sans regroupement, cela te permet d'avoir la répartition dans chaque colonne (appelons là req1)
    2. Tu crées une deuxième requête dans laquelle tu fais des regroupements à partir des n colonnes générées sur ta requête 1 (req1) ainsi tu auras somme de colonne 1 + somme de colonne 2 + somme de colonne 3 regroupé sur chaque client.


    JimBoLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

Discussions similaires

  1. Requete analyse croisée parametrée
    Par maverick91 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/07/2006, 12h04
  2. graphique à partir d'une requete analyse croisée
    Par coralyvan dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/07/2006, 21h25
  3. Etat basé sur une Requete Analyse Croisée
    Par Bercud dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/06/2006, 16h03
  4. Requete Analyse Croisée
    Par beurnoir dans le forum Access
    Réponses: 7
    Dernier message: 15/11/2005, 10h38
  5. Requete Analyse croisée en VBA, Reconnait pas "TRANSFOR
    Par samlepiratepaddy dans le forum Access
    Réponses: 2
    Dernier message: 20/10/2005, 08h58

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