Bonjour à tous,
Actuellement en alternance en 2ème année de DUT, j'effectue des requêtes sous sql server. Je m'en remets à vous car j'ai beau chercher, je ne trouve pas ma réponse et mon tuteur est en vacance donc il ne peut pas m'aider...
En gros j'ai une table sur laquelle j'ai des données, elle s'appelle 'factweeklyinventory'.
Voici sa composition :
Les champs qui m'intéresse sur cette table sont le timeid, productid, shipperid uniquement.
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 timeId ProductID ShipperID quantity supplierPurchasePriceValue PurchasePriceValue revenueValue OutOfStock salesQuantity salesPeriod saleQuantity_W_1 lastEntry firstEntry firstExpectedQty firstExpectedDate firstExpectedDelay nextExpectedQty nextExpectedDate nextExpectedDelay supplierDelay shopSalesQuantity shopNumber targetRotationDay rotationClass
Il se trouve qu'un utilisateur aimerait avoir un nouveau champ, currentshippertype qui serait pareil que le shipperid mais à la dernière date donnée d'un produit.
En effet, les données de la table factweeklyinventory sont historisées de façon hebdomadaire, donc on a le shipper pour un produit chaque samedi.
Cependant, l'utilisateur souhaite obtenir un shipper pour ce meme produit mais à la date à jour pour faire des comparaisons.
Les autres tables dont j'ai besoin pour construire ce nouveau champ sont : bc, bc_prod, shipper
La requête qui permet d'avoir la date avec le shipper correspondant à la date pour le produit :
Voici la requête que j'ai essayé de faire mais ça ne donne rien de concluant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select dat, product_ref, shipper from bc inner join bc_prod on bc.id=bc_id inner join shipper on bc.shipper=shipper.name and main=1 order by dat desc
J'obtiens en effet peu de lignes par rapport à ce que je suis censé avoir (138 170 lignes).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select timeid, productid, dat, shipperid, shipper as currentshippertype from bc inner join bc_prod on bc.id=bc_id inner join shipper on bc.shipper=shipper.name and main=1 inner join FactWeeklyInventory on FactWeeklyInventory.productid=bc_prod.product_ref and FactWeeklyInventory.timeid=dat where datepart(weekday,cast(bc.DAT as datetime))=7
Ma table factweeklyinventory comporte 966 865 lignes et comme vous l'avez compris il faut que ma jointure permette d'obtenir un currentshippertype pour chaque ligne avec la date à jour.
J'espère avoir été assez clair dans mon problème ^^
Je ne sais pas si la jointure est la meilleur option ? un curseur serait-il plus judicieux ?
Merci à tous ceux qui éclaireront ma lanterne.
Kent69003
Partager