Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour à tous,
J'ai un petit soucis qui me bloque concernant une opération entre 2 tables. Voici ma situation :
Je charge les comptes de résultats de plusieurs entités de mon entreprise. Chaque table correspond aux chiffres en cumul sur les 12 mois.
Janvier Cumul
Février Cumul
Mars Cumul
Avril Cumul
etc.
J'ai besoin néanmoins d'avoir également les données en Mensuel. Pour avoir le mois d'Avril en mensuel, je fais donc Avril Cumul - Mars Cumul via une clé de référence (Entité / Compte / Produit / Partenaire).
Jusqu'ici aucun blocage au niveau du code. Mais une exception fait que mes chiffres sont parfois faux. En effet, il arrive que sur une période, un montant existe pour une clé de référence donnée, mais que sur la période suivante, ce meme montant n'existe pour cause de correction. J'illustre :
Mars Cumul :
Entité | Compte | Produit | Partenaire | Montant |
---|---|---|---|---|
FR-0001 | P61000 | XXJF-003 | A | 1234,56 € |
FR-0001 | P61000 | XXQL-112 | B | 765,43 € |
FR-0002 | P61000 | XXFJ-044 | C | 23,4 € |
Avril Cumul :
Entité | Compte | Produit | Partenaire | Montant |
---|---|---|---|---|
FR-0001 | P61000 | XXJF-003 | A | 2321,56 € |
FR-0002 | P61000 | XXFJ-044 | C | 57,2 € |
La clef en gras en Mars cumul n'existe plus en Avril cumul suite à une correction. Le problème est qu'en Avril Mensuel, au lieu d'avoir -765,43€ afin d'annuler l'opération, j'ai 0 ou plutot rien puisque la clef n'est pas retrouvée pour faire la soustraction. Voici mon code :
IF(isnull(Montant),'0',Montant) - applymap('Map_montant_mars',Entité&'-'&Compte&'-'&Produit&'-'&Partenaire,'0') as Montant_mensuel,
Comment faire pour avoir ma ligne d'annulation sans avoir la même clef d'une table à l'autre ?
Merci par avance
Cordialement,
Jean-François
Bonjour,
Si j'ai bien compris ton problème, une solution pourrait être de tester la présence de ta clé d'une table à l'autre, si elle n'existe pas, la rajouter avec le montant négatif du dernier mois afin de revenir à 0.
Penses tu que cette solution soit satisfaisante ?
Une solution passant par le script est de rajouter tes enregistrements vides dans tes tables en créant des valeurs NULL.
D'une part, il faut que tu utilise
RIGHT JOIN
LOAD
tes_dimensions
;
pour rajouter les NULL
D'autre part, il faut que tu recharge ta table temporaire dans une table définitive en remplacant les NULL par des 0, à l'aide de alt( _ , 0 ) :
alt( valeur , 0 ) as valeur
Il serait mieux que tu nous fournisses une capture d'écran de ton schéma de table, si tu veux du code plsu explicite...