Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour le communauté,
Je n'arrive pas à trouver une expression qui me permette de bien totaliser mes lignes et que le total de la colonne soit aussi correcte.
J'ai une commande (devis) et plusieurs facturations (situations 001, 008 et 009). Dans mon tableau je dois faire la somme des factures par commande et articles.
Dans mon jeu de données, pour chaque chrono (articles) j'ai le montant global de la commande qui correspond à l'article. Un article pouvant faire l'objet de plusieurs facturations pour la même commande.
Exemple
| Affaires | %LSituat_Cle | %LSituat_Key | LSituat_Acteur | LSituat_Code_Commande | LSituat_Chrono | LSituat_Code_Situation | Sum(Commande_HT) | Facturé |
| toto | 0010|1001|10012409|0000000001|0001|001|00001|008 | 0010|1001|10012409|0000000001|0001|00001|008 | 0000000001 | 0001 | 00001 | 008 | 20021,00 | 20021 |
| toto | 0010|1001|10012409|0000000001|0001|001|00002|008 | 0010|1001|10012409|0000000001|0001|00002|008 | 0000000001 | 0001 | 00002 | 008 | 158936,50 | 15000 |
| toto | 0010|1001|10012409|0000000001|0001|001|00002|009 | 0010|1001|10012409|0000000001|0001|00002|009 | 0000000001 | 0001 | 00002 | 009 | 158936,50 | 8000 |
| toto | 0010|1001|10012409|0000000001|0001|001|00004|008 | 0010|1001|10012409|0000000001|0001|00004|008 | 0000000001 | 0001 | 00004 | 008 | 7267,47 | 7000,00 |
| toto | 0010|1001|10012409|0000000001|0001|001|00004|009 | 0010|1001|10012409|0000000001|0001|00004|009 | 0000000001 | 0001 | 00004 | 009 | 7267,47 | 267,47 |
| toto | 0010|1001|10012409|0000000002|0001|001|00005|008 | 0010|1001|10012409|0000000002|0001|00005|008 | 0000000002 | 0001 | 00005 | 008 | 2741,00 | 2741 |
| toto | 0010|1001|10012409|0000000003|0001|001|00003|001 | 0010|1001|10012409|0000000003|0001|00003|001 | 0000000003 | 0001 | 00003 | 001 | 3843,00 | 3843 |
Il faut que j'arrive à ce résultat :
| Affaires | %LSituat_Cle | %LSituat_Key | LSituat_Acteur | LSituat_Code_Commande | LSituat_Chrono | LSituat_Code_Situation | Sum(Commande_HT) | Facturé |
| toto | 0010|1001|10012409|0000000001|0001|001|00002|008 | 0010|1001|10012409|0000000001|0001|00002|008 | 0000000001 | 0001 | 00002 | 008 | 158936,50 | 158000,00 |
| toto | 0010|1001|10012409|0000000001|0001|001|00004|008 | 0010|1001|10012409|0000000001|0001|00004|008 | 0000000001 | 0001 | 00004 | 008 | 7267,47 | 7267,47 |
| TOTAL | 186224,97 | 185288,47 | ||||||
| toto | 0010|1001|10012409|0000000002|0001|001|00005|008 | 0010|1001|10012409|0000000002|0001|00005|008 | 0000000002 | 0001 | 00005 | 008 | 2741,00 | 2741,00 |
| TOTAL | 2741,00 | 2741,00 | ||||||
| toto | 0010|1001|10012409|0000000003|0001|001|00003|001 | 0010|1001|10012409|0000000003|0001|00003|001 | 0000000003 | 0001 | 00003 | 001 | 3843,00 | 3843,00 |
| TOTAL | 3843,00 | 3843,00 |
Je n'arrive pas à calculer la colonne Commande HT à l'aide d'une expression ! Pourriez vous m'aider ? Est-ce qu'il faut pour un cas comme celui là passer par le script de chargement ?
Merci par avance et bonne année à toutes et à tous 😉
Bonjour,
J'ai réglé mon problème en passant par le script de chargement. Déjà j'avais un souci au niveau des datas avec des lignes à blanc. J'ai donc commencé par faire du nettoyage.
// Suppression des lignes sans période
D_Situat_Situation_Ligne_4:
LOAD *,
'toto' as toto //J'ai ajouté ce champ pour que la table se crée, il y a surement mieux à faire mais pas trouvé !
RESIDENT D_Situat_Situation_Ligne_3
WHERE num(LSituat_ExercicePeriode) >0 ;
DROP TABLE D_Situat_Situation_Ligne_3;
D_Situat_Situation_Ligne:
LOAD
*,
If(%LCommande_Chrono_Key <> Previous(%LCommande_Chrono_Key), 1, 0) AS LSituat_FirstValue
RESIDENT D_Situat_Situation_Ligne_4
ORDER BY %LCommande_Chrono_Key;
DROP TABLE D_Situat_Situation_Ligne_4;
// 5. Nettoyage
DROP FIELD toto;Ici j'alimente une variable = 1 si je suis sur le premier chrono (article) de la facture. Au niveau du tableau je multiplie la Commande_ht par la variable qui est égale à 1. J'évite ainsi les doublons si j'ai plusieurs factures, faut juste que mon tri soit bon !!
Merci pour vos retours cela m'a bien aidé dans mes recherches et ma solution.
Hello, $Sum(Aggr(Min(Commande\_HT), LSituat\_Code\_Commande, LSituat\_Chrono))$ est la solution idéale : elle force Qlik à ne considérer qu'une seule valeur (le minimum) pour chaque couple Commande/Chrono, peu importe le nombre de lignes de facturation affichées. Cela permet de verve credit card payment conserver le montant correct sur chaque ligne individuelle tout en affichant un total de colonne mathématiquement juste en bas de votre tableau.
Try this
Sum(
Aggr(
Max(Commande_HT),
LSituat_Code_Commande,
LSituat_Chrono
)
)
Merci g9uwy21zze et Chanty4u pour vos retours. Vos solutions fonctionnent, par contre elles marchent dans mon cas que si j'ai sélectionné une affaire, sinon ma colonne est vide. Je ne vois pas pourquoi 😞
Bonjour,
J'ai réglé mon problème en passant par le script de chargement. Déjà j'avais un souci au niveau des datas avec des lignes à blanc. J'ai donc commencé par faire du nettoyage.
// Suppression des lignes sans période
D_Situat_Situation_Ligne_4:
LOAD *,
'toto' as toto //J'ai ajouté ce champ pour que la table se crée, il y a surement mieux à faire mais pas trouvé !
RESIDENT D_Situat_Situation_Ligne_3
WHERE num(LSituat_ExercicePeriode) >0 ;
DROP TABLE D_Situat_Situation_Ligne_3;
D_Situat_Situation_Ligne:
LOAD
*,
If(%LCommande_Chrono_Key <> Previous(%LCommande_Chrono_Key), 1, 0) AS LSituat_FirstValue
RESIDENT D_Situat_Situation_Ligne_4
ORDER BY %LCommande_Chrono_Key;
DROP TABLE D_Situat_Situation_Ligne_4;
// 5. Nettoyage
DROP FIELD toto;Ici j'alimente une variable = 1 si je suis sur le premier chrono (article) de la facture. Au niveau du tableau je multiplie la Commande_ht par la variable qui est égale à 1. J'évite ainsi les doublons si j'ai plusieurs factures, faut juste que mon tri soit bon !!
Merci pour vos retours cela m'a bien aidé dans mes recherches et ma solution.