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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| -- Cette liste ramène les informations pour un produit ayant un numéro de produit -- choisi par client
DECLARE @Produit VARCHAR(50);
SET @Produit = '8465-1-05-0%'; -- Modifier le chiffre pour trouver un autre produit
WITH Rank_CTE (Date_entrée, Client_livr, Desc_client_livr, Date_sortie, No_Serie, No_Prod, Desc_Prod, statut_produit)
AS
(
SELECT DISTINCT
in_items_sn.in_date AS 'Date_entrée'
, ve_livraisons.re_clients_id AS 'Client_livr'
, re_clients.description AS 'Desc_client_livr'
, in_items_sn.out_date AS 'Date_sortie'
, in_items_sn.id AS 'No_Serie'
, in_items_sn.in_items_id AS 'No_Prod'
, in_items_sn.description AS 'Desc_Prod'
, CASE -- selon type de transaction, inscrire le statut du produit
WHEN in_items_sn.in_type = '0' -- statut produit livré au membre
THEN 'En circulation'
WHEN in_items_sn.in_type = '4' -- statut produit en attente de distribution
THEN 'Reçu - À distribuer'
WHEN in_items_sn.in_type = '8' -- statut produit retourné (en stock)
THEN 'Retourné - à redistribuer'
ELSE 'Produit en statut inconnu'
END AS 'statut_produit' -- case in_Type numéro de série
, RANK() OVER (PARTITION BY ve_livraisons.re_clients_id order by in_items_sn.in_date DESC) RankDate
FROM in_items_sn
LEFT OUTER JOIN ve_livraisons
ON ve_livraisons.id = in_items_sn.out_source_id
LEFT OUTER JOIN re_clients
ON re_clients.id = ve_livraisons.re_clients_id
LEFT OUTER JOIN rt_clients
ON rt_clients.id = in_items_sn.in_source_id
LEFT OUTER JOIN ac_livraisons
ON ac_livraisons.id = in_items_sn.in_source_id
WHERE
in_items_sn.in_items_id like @Produit
AND
ve_livraisons.re_clients_id BETWEEN '1' AND '99999'
ORDER BY
RankDate, Date_entrée DESC
)
SELECT *
FROM Rank_CTE
WHERE RankDate = 1 |
Partager