Bonjour,
J'ai un besoin d'aide pour rédiger une requête SQL.
Etan débutant, et faisant une analyse sur la pertinence d'une requête déjà faite.
J'ai procédé par découper la requête initial afin de pouvoir étudier la pertinence des données remonté.
En faisant ça, j'ai pu me rendre compte que la requête n'était pas limité en thermes de période.
Peut être que vous allez me conseiller de m'orienter vers une vision différente de celle que j'ai choisi et je ne suis pas contre, je possède juste peut d'expérience en SQL.
Je vais vous établir tout mon travail depuis la requête initial.
La requête initial qui à pour objectif de remonter les données au format suivante :
Opérateur | ETAPE(statu d'un carton ou article) | Nbr (quantité de carton ou d'article)
INT12345 | 3 - Emballé | 6 (pour 6 cartons par exp)
Donc cette requête initial est trop complexe pour moi, du coup j'ai procédé au découpage afin de travailler par étapes.
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
30
31
32
33
34
35 SELECT * FROM --articles (select ptt.user_id as "OPERATEUR", '1 - Pièces Recues' as "ETAPE", sum(case when ptt2.tran_nbr is not null then ptt2.nbr_units else ptt.nbr_units end) as "Nbr" from prod_trkg_tran ptt left join (select * from prod_trkg_tran ptt2 where tran_type =600 and trunc(create_date_time) = trunc(sysdate)) ptt2 on ptt2.cntr_nbr = ptt.cntr_nbr and rownum = 1 where ptt.tran_type =100 and trunc(ptt.create_date_time) = trunc(sysdate) group by ptt.user_id --/article union --Carton SELECT user_id as "OPERATEUR",'3 - oLPN Emballés' as "ETAPE", count(cntr_nbr) as "Nbr" from prod_trkg_tran where old_stat_code <20 and new_stat_code = 20 and trunc(create_date_time) = trunc(sysdate) group by user_id --/Carton union --Articles select last_updated_source as "OPERATEUR", '4 - Pièces Emballées' as "ETAPE", sum(on_hand_qty) as "Nbr" from wm_inventory where tc_lpn_id in ( SELECT distinct cntr_nbr from prod_trkg_tran where old_stat_code <20 and new_stat_code = 20 and trunc(create_date_time) = trunc(sysdate)) group by last_updated_source --/Article union --Carton SELECT user_id as "OPERATEUR", '5 - oLPN Ancrés' as "ETAPE", count(cntr_nbr) as "Nbr" from prod_trkg_tran where old_stat_code =20 and new_stat_code = 20 and to_locn in (select locn_id from locn_hdr where dsp_locn like 'CONS%') and trunc(create_date_time) = trunc(sysdate) group by user_id union SELECT user_id as "OPERATEUR", '6 - oLPN Chargés' as "ETAPE", count(cntr_nbr) as "Nbr" from prod_trkg_tran where old_stat_code =20 and new_stat_code = 50 and trunc(create_date_time) = trunc(sysdate) group by user_id) --/carton
Dans ce code, vous trouverez des balises "--Article et --/Article" pour vous permettre de vous repérer.
Voici ce que j'ai fait :
Maintenant, je vous explique mon besoin. Il est que sur le bout de requête que j'ai se base sur une date et un user défini manuellement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT user_id as "OPERATEUR",'3 - oLPN Emballés' as "ETAPE", cntr_nbr as "OLPN" FROM prod_trkg_tran WHERE old_stat_code <20 and new_stat_code = 20 and trunc(create_date_time) = trunc(sysdate)AND user_id ='INT52' AND CREATE_DATE_TIME >= '25/08/20 07:00:00,000000000' AND CREATE_DATE_TIME >= '25/08/20 14:00:00,000000000';
Je souhaiterai sur ce code
1 : qu'il ce base sur la date du jour.
2 : Comme sur la requête initiale, qu'elle récupère les données pour tous les utilisateurs présent dans la colonne "user_id".
Je suis dans mon jus, si je ne suis pas claire. N'hésitez pas à me poser vos questions.
MErci par avance.
Partager