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

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Gestion
    Inscrit en
    avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestion

    Informations forums :
    Inscription : avril 2018
    Messages : 9
    Points : 1
    Points
    1

    Par défaut Fusion de 2 univers avec un champ année - Obtenir le champ mois correspondant à l'année max

    Bonjour,

    Je suis débutante sous WEBI et aurais besoin d'aide SVP sur un cas simple en apparence

    Nous chargeons des balances chaque année et j'aurai besoin de récupérer le mois de clôture des comptes correspondant à la dernière année chargée uniquement

    J'ai 2 univers
    Le 1er univers contient le code tiers + le champ année de chargement d 'une balance
    Le 2ème univers contient le code tiers + le champ année + le mois de clôture des comptes
    Je lie ces 2 univers sur le code tiers et le champ année.

    Je crée une variable max(année fusionnée) qui va me donner 2018 par exemple
    Si je crée une formule "Mois où([Année fusionnée) = 2018)" cela fonctionne
    Comme je ne sais pas quelle sera l'année max en fonction du tiers, j'utilise le formule suivante qui ne fonctionne pas (elle me donne des multivalues)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mois où([Année fusionnée=Max(Année fusionnée))
    Pour mieux comprendre, je joints un fichier excel en pièce jointe.
    Merci de votre aide

    Chrystel
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    décembre 2006
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2006
    Messages : 2 564
    Points : 4 772
    Points
    4 772

    Par défaut

    Bonjour,

    Tout d'abord, je pense qu'il y dans l'énoncé de la question une confusion entre univers et requêtes (appelés aussi fournisseurs de données).
    Ceci étant dit, la première chose à tenter lorsque l'on a le message #MULTIVALUE, c'est d'utiliser une fonction de la catégorie Agrégat comme Min() ou Max() pour voir si le problème disparaît.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Max([Mois univers2]([Année] = Max([Année fusionnée]))
    Je reste un peu sceptique sur la capacité de B.O. à résoudre cette égalité mais il faut essayer.
    Dans une cellule ça peut être envisageable mais dans un tableau j'en doute.
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Gestion
    Inscrit en
    avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestion

    Informations forums :
    Inscription : avril 2018
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Bonjour,


    Merci pour ce retour rapide.

    Oui, vous avez raison. En fait je fusionne 2 requêtes issues de 2 univers différents.
    J'ai tenté ces fonctions min et max mais Le message #MULTIVALUE persiste.
    C'est étonnant que cela fonctionne dans le 1er cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Max([Mois univers2]([Année] = 2018)
    et pas dans le second cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Max([Mois univers2]([Année] = Max([Année fusionnée])
    car la variable Max([Année fusionnée] est bien l'année 2018...

    Avez-vous d'autres possibilités SVP ? Je sèche...
    Merci beaucoup

  4. #4
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    décembre 2006
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2006
    Messages : 2 564
    Points : 4 772
    Points
    4 772

    Par défaut

    Bonjour,

    Pouvez-vous essayer de mettre la parenthèse fermante de Max() avant le plutôt qu'à la fin de la formule et dire ce que cela donne ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Max([Mois univers2]) Où([Année] = Max([Année fusionnée])
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Gestion
    Inscrit en
    avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestion

    Informations forums :
    Inscription : avril 2018
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Bonjour,

    Merci, cela fonctionne mais je n'obtiens pas le résultat escompté

    Je vois qu'il me faut partir de la requête 1 qui contient le tiers et l'année de chargement de la balance
    Le but étant d 'obtenir :
    Le tiers de la requête 1 - L'année max de la requête 1 -Le mois de la requête 2 correspondant à l'année max de la requête 1

    J'ai fait une fusion des 2 requêtes sur le tiers et l'année
    J'ai créé la variable mois de la requête 2 en information

    Pour obtenir le mois de la requête 2 correspondant à l'année max de la requête 1, j'ai créé une formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Max([mois requête2])([Année requête2]=(Max([Année requête1]) Dans([Tiers requête 1]))
    mais j'ai des #MULTIVALUES.

    Je ne suis pas experte et j'apprécie votre aide, très réactive en plus.
    Merci d'avance
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    décembre 2006
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2006
    Messages : 2 564
    Points : 4 772
    Points
    4 772

    Par défaut

    J'ai bien compris votre besoin.
    Le problème est que je n'ai jamais vu B.O. accepter un Max() dans une "condition" (en fait il s'agit d'un contexte de calcul utilisant Où).

    Vous n'y parviendrez qu'en changeant de méthode.

    Si vous avez une variable Mois en nombre plutôt qu'en texte vous pourriez essayer la méthode suivante :

    1. Créer une variable AnnéeMois de type 201811 =[Année requête2]+[MoisNum].
    2. Et remplacer votre Calcul par =Max[AnnéeMois].

    Est ce que ça répondrait à votre besoin ?

    Si vous n'avez pas de MoisNum il faut créer cette variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = Si([mois requête2] = "Janvier" Alors "01" SinonSi([mois requête2] ="Février" SinonSi([mois requête2] =....
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Gestion
    Inscrit en
    avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestion

    Informations forums :
    Inscription : avril 2018
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Bonsoir,

    Je ne peux malheureusement pas utiliser une fonction Max (Année 2 +Mois) car l'année max que je souhaite est celle de la requête 1
    Je souhaite récupérer dans la requête 1 l'année 2017 (date de chargement de balance) et le mois de clôture des comptes correspondant dans la requête 2 (donc août 2017).

    Requête 1 : Tiers + Années 2016 - 2017

    Requête 2 : Tiers + Mois sept + Année 2017
    Mois août + Année 2018

    Résultat à obtenir = Tiers requête 1 / Max Année requête 1 / Mois dans la requête 2 lié à l'année max de la requête 1 (donc septembre 2017)
    Si je crée une fonction Max (Année 2 +Mois) je récupère août 2018.

    Merci beaucoup pour votre aide et disponibilité.

  8. #8
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    décembre 2006
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2006
    Messages : 2 564
    Points : 4 772
    Points
    4 772

    Par défaut

    Citation Envoyé par Chrystel01 Voir le message
    Bonsoir,

    Je ne peux malheureusement pas utiliser une fonction Max (Année 2 +Mois) car l'année max que je souhaite est celle de la requête 1
    Mais vous pouvez dans la requête 2 poser la condition suivante :
    [Année] Dans Liste ... Résultat d'une autre requête ... [Année Requête 1]
    Et là vous pourrez utiliser Max (Année 2 +Mois)
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  9. #9
    Nouveau Candidat au Club
    Femme Profil pro
    Gestion
    Inscrit en
    avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestion

    Informations forums :
    Inscription : avril 2018
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Bonjour,

    C'était une excellente idée. Mais malheureusement cela ne fonctionne pas.

    [Année] Dans Liste ... Résultat d'une autre requête ... [Année Requête 1]
    L'année 2018 va bien se trouver dans la requête 1, mais pas sur tous les tiers (certains auront une année max = 2017 et dans ce cas le mois rapatrié sera à tort celui de 2018) ...

    Une autre idée ?
    Merci beaucoup pour votre temps !!!

  10. #10
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    décembre 2006
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2006
    Messages : 2 564
    Points : 4 772
    Points
    4 772

    Par défaut

    Citation Envoyé par Chrystel01 Voir le message
    Bonjour,

    C'était une excellente idée. Mais malheureusement cela ne fonctionne pas.

    [Année] Dans Liste ... Résultat d'une autre requête ... [Année Requête 1]
    L'année 2018 va bien se trouver dans la requête 1, mais pas sur tous les tiers (certains auront une année max = 2017 et dans ce cas le mois rapatrié sera à tort celui de 2018) ...

    Une autre idée ?
    Merci beaucoup pour votre temps !!!
    Oui c'est de ma faute ... j'ai oublié de préciser qu'il faut le faire également sur Tiers
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  11. #11
    Nouveau Candidat au Club
    Femme Profil pro
    Gestion
    Inscrit en
    avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestion

    Informations forums :
    Inscription : avril 2018
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Si je le fais séparément sur le tiers et l'année, cela ne fonctionne pas..
    Il aurait fallu pouvoir appliquer votre filtre de requête sur un champ combiné Tiers-Année qui n'existe pas dans l'univers

    Une autre idée ?
    Encore merci !!!

  12. #12
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    décembre 2006
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2006
    Messages : 2 564
    Points : 4 772
    Points
    4 772

    Par défaut

    Citation Envoyé par Chrystel01 Voir le message
    Si je le fais séparément sur le tiers et l'année, cela ne fonctionne pas..
    Il aurait fallu pouvoir appliquer votre filtre de requête sur un champ combiné Tiers-Année qui n'existe pas dans l'univers
    C'est parfaitement exact.

    Citation Envoyé par Chrystel01 Voir le message
    Une autre idée ?
    Encore merci !!!
    Je vais y réfléchir ... là je pars en réunion
    Vous avez accès à la modification du SQL dans la requête ?
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  13. #13
    Nouveau Candidat au Club
    Femme Profil pro
    Gestion
    Inscrit en
    avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestion

    Informations forums :
    Inscription : avril 2018
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Oui, j'ai accès au SQL même si je n'en ai jamais vraiment fait.
    Je vous joints le fichier si besoin avec le script et une impression des écran des 2 requêtes (le champ mois s'appelle libellé court 4-MI dans l'univers

    Votre aide est précieuse
    Merci !!!
    Fichiers attachés Fichiers attachés

  14. #14
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    décembre 2006
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2006
    Messages : 2 564
    Points : 4 772
    Points
    4 772

    Par défaut

    Citation Envoyé par Chrystel01 Voir le message
    Oui, j'ai accès au SQL même si je n'en ai jamais vraiment fait.
    Et vous n'avez personne autour de vous qui pratique le SQL pour l'adapter dans la requête 1 ?
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  15. #15
    Nouveau Candidat au Club
    Femme Profil pro
    Gestion
    Inscrit en
    avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestion

    Informations forums :
    Inscription : avril 2018
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    malheureusement non ...

  16. #16
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    décembre 2006
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2006
    Messages : 2 564
    Points : 4 772
    Points
    4 772

    Par défaut

    L'idéal dans un cas comme celui là serait d'ajouter dans l'univers un objet Année de la dernière balance (si j'ai bien tout compris).

    Bon on peut faire un essai mais je ne vous garantis rien.

    1. Duppliquer la Requête 1 (clic droit sur l'onglet de la Requête 1 ... Dupliquer)
    2. Sur la requête obtenue enlever l'objet Période Mesure - MI
    3. Cliquer sur le bouton Afficher le script
    4. Sélectionner Utiliser un script de requête personnalisé
    5. Corriger le script de la façon suivante : les ajouts sont en gras

    Suppression de Distinct, Application de la fonction agrégat Max() sur l'année et clause Group by en fin de script
    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
    27
    28
    29
    SELECT 
      REF_GE05_ASSO_H.CODE_TIERS,
      REF_GE05_ASSO_H.NOM_TIERS,
      decode(REF_GE99_AXES_4.LIBC,'N/R','Non renseigné',REF_GE99_AXES_4.LIBC),
    Max( to_number(substr(DWH_GE05_MESURE.PERIODE_MESURE,1,4)) ) 
    FROM
      REF_GE05_ASSO_H,
      REF_GE99_AXES  REF_GE99_AXES_4,
      DWH_GE05_MESURE
    WHERE
      ( DWH_GE05_MESURE.MI_AXE_CODE4=REF_GE99_AXES_4.AXE_CODE AND REF_GE99_AXES_4.CODE=DWH_GE05_MESURE.MI_CODE4  )
      AND  ( DWH_GE05_MESURE.MI_CODE1=REF_GE05_ASSO_H.CODE_SIRET AND REF_GE05_ASSO_H.NUM_CAF=DWH_GE05_MESURE.MI_CODE2  )
      AND  ( REF_GE05_ASSO_H.META_DAT_SUP is null  )
      AND  
      (
       DWH_GE05_MESURE.CODE_INDICATEUR  IN  ( 'OP_ARR_CPT_MOIS'  )
       AND
       DWH_GE05_MESURE.UO  IN  ( '39000'  )
       AND
       DWH_GE05_MESURE.MI_CODE5  <>  '0'
       AND
       ( SUBSTR(DWH_GE05_MESURE.CODE_INDICATEUR, 1, 3) = 'OP_'  )
       AND
       ( SUBSTR(DWH_GE05_MESURE.CODE_INDICATEUR, 1, 3) = 'OP_'  )
      )
    GROUP BY
    REF_GE05_ASSO_H.CODE_TIERS,
     REF_GE05_ASSO_H.NOM_TIERS,
      decode(REF_GE99_AXES_4.LIBC,'N/R','Non renseigné',REF_GE99_AXES_4.LIBC)
    6. Croiser les doigts, allumer un cierge, tenir une patte de lapin et Valider
    7. S'il aucune erreur n'est détectée Enregistrer
    8. Exécuter la requête
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  17. #17
    Nouveau Candidat au Club
    Femme Profil pro
    Gestion
    Inscrit en
    avril 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Gestion

    Informations forums :
    Inscription : avril 2018
    Messages : 9
    Points : 1
    Points
    1

    Par défaut

    Bonjour,

    Je n'ai pas dû allumer assez de cierges
    J'ai l'erreur" ORA-00979 n'est pas une expression GROUP BY" (pièces jointe).
    D'autre part, vous me dites de supprimer "Distinct" mais dans le SQL je vois "Select distinct"

    Mon problème ne semble pas si aisé à résoudre à distance.
    Je ne voudrais pas vous importuner car je suppose que vous avez bien d'autres choses à faire.
    En tout cas, je vous remercie pour toute l'aide apportée.
    Je ne manquerai pas de refaire appel au forum en cas de vaines recherches
    Images attachées Images attachées  

  18. #18
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    décembre 2006
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : décembre 2006
    Messages : 2 564
    Points : 4 772
    Points
    4 772

    Par défaut

    Oui il fallait bien enlever distinct du SQL qui est inutile dès que l'on opère un group by. (J'avais oublié de l'enlever du code SQL je viens de corriger).

    Le message d'erreur indique qu'un des termes du Select (hors le Max(...)) n'est pas indiqué dans la clause Group by.
    Vous êtes certaine d'avoir enlevé l'objet Période Mesure - MI avant de modifier le script ?

    Pouvez vous montrer l'intégralité du script une fois corrigé ?
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

Discussions similaires

  1. Réponses: 4
    Dernier message: 04/01/2017, 15h26
  2. Réponses: 3
    Dernier message: 10/08/2015, 17h30
  3. Obtenir que le mois ou l'année d'une date.
    Par nomade333 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/09/2013, 11h11
  4. Réponses: 11
    Dernier message: 12/02/2013, 16h48
  5. problème de selection de mois et l'année d'un champ
    Par fouz12 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/11/2009, 11h48

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