Bonjour,
J'ai les tables suivantes :
PRO (produit)
codsoc (société)
codpro (code produit)
codzn15 (code produit stock)
coduni (code unité)
PRC (assortiment client)
codsoc (société)
typtie (type de tiers)
sigfou (sigle du tiers)
codpro (code produit)
codzn2 (code produit à préparer)
Le lien est le suivant :
Pour un même CODSOC, pour TYPTIE = 'CLI', on a dans PRC la liste des CODPRO produits disponibles à la vente pour le client SIGFOU. Le PRC.CODZN2 est le produit à préparer dans le camion lorsque le client commande le produit. Le PRO.CODZN15 est le produit stock. L'unité d'un produit est PRo.CODUNI.
Par exemple :
- Je stock du lait en palettes (PRO.CODZN15)
- Je le gère dans mon article sous forme de bouteilles de 1 litre (PRO.CODPRO et PRC.CODPRO)
- Le client me l'achète en pack de 6 bouteilles (PRC.CODZN2)
Maintenant, j'ai la demande suivante, pour une application de prévisions de vente :
On doit faire des prévisions de vente sur le produit à préparer, sauf si ce dernier est un colis ou unité, à ce moment on prend le produit stock.
Le produit est retourné sans la première lettre.
Pour savoir si une unité est acceptable pour l'outils de prévisions de vente, il faut que :
- Soit l'unité commence par P, B ou D et qu'elle soit différente de PI
PRC.CODZN2 n'est pas toujours rempli, à ce moment je dois prendre PRO.CODZN15
Le produit n'est pas forcément assorti chez le client (il y a d'autres tables qui jouent dans la requête, et je peux avoir des produits qui ne sont pas dans PRC, à ce moment je dois prendre PRO.CODZN15
J'ai donc fait cette requête (Oracle, désolé pour la syntaxe DECODE) :
Le DECODE me semble très barbare.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select p1.codsoc, r.sigfou, SUBSTR(decode(nvl(p2.coduni, ' '), ' ', pro.codzn15, 'PI', pro.codzn15, decode(substr(p2.coduni, 1, 1), 'P', prc.codzn2, 'D', prc.codzn2, 'B', prc.codzn2, pro.codzn15)),2,9) from pro p1 left outer join prc r on r.codsoc = p1.codsoc and r.r.typtie = 'CLI' and r.codpro = p1.codpro left outer join pro p2 on p2.codsoc = r.codsoc and p2.codpro = r.codpro
Vous voyez une solution magique pour simplifier la chose ?
Partager