Bonjour !
Je me demandais comment faire pour faire une somme de somme avec cette somme un calcul.
Pour être plus clair j'ai besoin de deux table la table temps et la table commande dans cette table on a besoin que de la quantité.
J'ai un objet (ObjNo son code/id est sa référence donc pas besoin d'aller chercher dans la table objet) cet objet est concerné par plusieurs commandes (ProdNo), donc un objet peut avoir x commandes. Mais une commande ne concerne qu'un objet.
Pour chaque commande de l'objet on note à une date deux temps (Temps de préparation (SetT et temps d’exécution RunT).
Donc on doit commencer par faire pour chaque objet la somme des temps de ces commandes mais seulement les 10 dernières dates max des commandes pour ensuite additionner les deux temps pour finir par les diviser par les quantités.
Je vous explique :
L'objet 1 a pour commande la com1, la com2 et la com3.
La com1 a 20 date de poste, donc 20 SetT, 20 RunT et peut avoir 20 quantités différentes.
La com2 a 17 date de poste, donc 17 SetT, 17 RunT et peut avoir 17 quantités différentes.
La com3 a 5 date de poste, donc 5 SetT, 5 RunT et peut avoir 5 quantités différentes.
L'objet 2 a pour commande la com4, la com5 et la com6. (etc)
Ce que je veux faire, c'est cela => (RunT + SetT)/Qty qui donne donc un temps moyen
D'abord prendre par exemple pour la commande 1 les 10 dates les plus récentes et donc les 10 temps les plus récent pour les additionner J'ai donc une somme(SetT), somme(RunT) et somme(Qty). De même pour la commande 2 ainsi de suite (pour l'instant peu m'importe l'article je veux faire ça par commande)
Pour faire j'ai fait une requête je pense qu'elle est bonne mais peut être améliorable.
Si je ne me trompe pas cette requête nous donne toutes les sommes par groupement sur prodno. (Peut être que deux sous requêtes n'est pas utile je ne sais pas) de façon à ce qu'il y a 3 colonnes des sommes sur 10 dates ou moins.
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 SELECT C.[ProdNo] , SUM(P.[Qty]) as TotalQ , SUM(C.[SetT]) as TotalSet , SUM(C.[RunT]) as TotalRt FROM Temps as C JOIN commande as P on C.[ProdNo] = P.[ProdNo] where P.[ProdNo] in (SELECT ClE.[ProdNo] FROM Temps AS ClE WHERE C.[ProdNo] = ClE.[ProdNo] and ClE.[Posting Date] in ( Select TOP 10 ClE2.[PostDate] FROM Temps AS ClE2 WHERE ClE2.[ProdNo] = ClE.[ProdNo] order by ClE2.[PostDate] DESC ) ) GROUP BY C.[ProdNo];
Mais ensuite je ne sais pas comment exploiter ce résultat pour refaire une somme par article. Car logiquement on a ça
obj1 com1 som1 som2 som3
obj1 com2 som1 som2 som3
obj2 com4 som1 som2 som3
...
et maintenant il faudrait
obj1 som1 som2 som3
obj2 som1 som2 som3
...
Je pense à une nouvelle sous requête non ? Mais justement en mettant la précédente requête en imbriquée dans une autre je trouvais des résultats erronés.
Ensuite il faut ajouter les som1 et 2 pour la diviser par la 3 pour chacun des objets.
Est ce possible qu'avec du code sql ?
Merci.
PS : il m'est impossible de fournir la base de données.
Partager