Bonjour à tous,
j'écris ne procédure stockée qui doit me calculer le rendement de production pour une date donnée, avec éventuellement des paramètres comme un département bien particulier ou une partie de son nom, même chose pour l'article fabriquée ainsi que pour l'opérateur de production.
Je calcul le rendement comme étant le rapport entre la quantité de pièces bonnes produites sur la quantité de pièces bonnes attendues, compte tenu du temps de fabrication déclaré.
J'ai une table rof qui contient les réceptions d'OF, une table sof qui contient les données de suivi d'OF et donc sa gamme (cadence théorique d'une opération), une table art pour les articles, usr pour les utilisateurs, etc...
Voici mon script :
J'aimerais me prémunir d'une erreur d'exécution au niveau de la formule du rendement, division par zéro dans le cas où la quantité attendue serait nulle (par exemple si j'interroge sur un jour férié) je voudrais déjà éviter l'erreur d'exécution et aussi retourner un rendement de 100%
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 COALESCE(sum(rof_qte_finie),0) AS Bonnes, COALESCE(sum(rof_qte_rejetee),0) AS Rebuts, COALESCE(sum(rof_duree * sof_cadence),0) AS Attendues, COALESCE(sum(rof_qte_finie)/sum(rof_duree * sof_cadence),0) AS Rendement FROM rof INNER JOIN ofs ON rof_of_id = of_id INNER JOIN sof ON rof_of_id = sof_of_id AND rof_op = sof_op INNER JOIN dept ON sof_departement = dept_id INNER JOIN art ON of_article_id = art_id INNER JOIN usr ON rof_qui = usr_id AND usr_operateur = 1 WHERE rof_date = @jour AND rof_qte_finie >= 0 AND rof_qte_rejetee >= 0 AND ( (@departement > 0 AND dept_id = @departement) OR (COALESCE(@departement,0)<= 0 AND dept_nom LIKE '%' + @filtre_departement + '%') ) AND ( (@article > 0 AND art_id = @article) OR (COALESCE(@article,0)<= 0 AND art_reference LIKE '%' + @filtre_article + '%') ) AND ( (@operateur > 0 AND usr_id = @operateur) OR (COALESCE(@operateur,0)<= 0 AND usr_userid LIKE '%' + @filtre_operateur + '%') )
Mais comment faire ça directement dans le SELECT ?
Merci à vous
Partager