Bonjour,
J'ai un problème dans l'établissement d'une requête.
Je précise que je ne suis pas du tout expert d'Oracle. J'utilise le logiciel Jet Reports (souvent utilisé avec l'ERP Dynamics anciennement Navision je crois) en lien avec une base de données Oracle (elle-même étant la base de données de notre ERP Infor BaaN LN). C'est un outil d'extraction depuis des tables. Dans le cadre de ce logiciel, quand ses possibilités sont trop limitées, il autorise l'utilisation de requête SQL qu'on doit écrire soi-même.
Mais autant je connais a priori bien les tables de mon ERP et ce que je veux en faire, autant je ne connais pas toujours la syntaxe pour réaliser ce que je veux.
Ceci ci-dessous fonctionne pour donner la valeur du stock quasi comme dans l'ERP :
SQL=Mais hélas je ne dois pas faire l'arrondi sur le produit final une fois fini tout ce select.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT SUM ( ROUND ( T1.T$QHND * TTICPR340155.T$RECA$1 , 2 ) ) AS SELECTION FROM LNGROUP.TWHWMD215155 T1 , LNGROUP.TTCIBD001155 , LNGROUP.TTICPR007155 , LNGROUP.TTICPR340155 WHERE T1.T$ITEM = TTCIBD001155.T$ITEM AND T1.T$ITEM = TTICPR007155.T$ITEM AND T1.T$ITEM = TTICPR340155.T$ITEM AND TTICPR340155.T$INDT = TTICPR007155.T$LTCP AND %Filter1%
Je dois faire l'arrondi sur le prix de revient unitaire total de l'article puis seulement le multiplier pas la quantité.
TWHWMD215155 c'est la table du stock où il y a la quantité.
TTICPR340155 c'est la table du prix de revient mais un article y a plusieurs records (par élément de prix de revient et par date de calcul).
TTCIBD001155 et TTICPR007155 ce sont des tables d'article dont j'ai besoin à terme pour les critères/plages du select.
J'ai tenté intuitivement cette syntaxe ci-dessous (je "renomme" une table T1 en me disant que le lien se ferait mieux), mais ça ne fonctionne pas au sens qu'elle n'est même pas valide :
SQL=
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 SELECT SUM ( ROUND ( T1.T$QHND * ( SELECT SUM ( TTICPR340155.T$RECA$1 ) FROM T1 , LNGROUP.TTCIBD001155 , LNGROUP.TTICPR007155 , LNGROUP.TTICPR340155 WHERE TTCIBD001155.T$ITEM = T1.T$ITEM AND TTCIBD001155.T$ITEM = TTICPR007155.T$ITEM AND TTCIBD001155.T$ITEM = TTICPR340155.T$ITEM AND TTICPR340155.T$INDT = TTICPR007155.T$LTCP ) , 2 ) ) AS SELECTION FROM LNGROUP.TWHWMD215155 T1 WHERE %Filter1%
Une idée de comment multiplier un champ par une somme de champ avec une jointure ?
Visiblement ce n'est pas si simple que d'écrire le produit d'un champ par un select sum lié au précédent champ.
Merci d'avance.
Partager