Bonjour à tous
J'ai besoin de votre aide pour créer une vue afin de rassembler des données:
ma première vue "VIST_DATA" contient une liste des données par machine et par date
la deuxième vue "VIST_LIGN" est pour but de faire une somme des temps d'ouverture par lignes car si je utilise une somme ordinaire donc le système va me faire une somme globale pour tous les machines par lignes alors que ce résultat est indésirable
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 CREATE OR REPLACE FORCE VIEW "COSWIN"."VIST_DATA" ("EQUIPMENT", "DESCRIPTION", "LIGNE", "ZONE", "CRITIQUE", "FONCTION", "STATUS", "LEVEL_", "DATE_", "NUM_SEMAINE", "NUM_MOIS", "NUM_ANNEE", "T_OUVERTURE", "N_OT", "T_ARRET") AS SELECT EREQ_CODE AS EQUIPMENT, ereq_description AS DESCRIPTION, EREQ_PARENT_EQUIPMENT AS LIGNE, EREQ_ZONE AS ZONE, ereq_boolean1 AS CRITIQUE, EREQ_CATEGORY AS FONCTION, EREQ_EQUIPMENT_STATUS AS STATUS, CASE WHEN EREQ_LEVEL=1 THEN 'LIGN' WHEN EREQ_LEVEL=2 THEN 'EQUIPMENT' WHEN EREQ_LEVEL=3 THEN 'TOOLS' ELSE 'TEST' END AS LEVEL_, EQFR_DATE1 AS DATE_, TO_NUMBER (TO_CHAR (EQFR_DATE1, 'WW')) AS NUM_SEMAINE, TO_NUMBER (TO_CHAR (EQFR_DATE1, 'MM')) AS NUM_MOIS, TO_NUMBER (TO_CHAR (EQFR_DATE1, 'YYYY')) AS NUM_ANNEE, EQFR_NUMBER1 AS T_OUVERTURE, EQFR_NUMBER2 AS N_OT, EQFR_NUMBER3 AS T_ARRET FROM EQUIPMENT LEFT OUTER JOIN EQUIPMENT_FREE ON EQUIPMENT.EREQ_CODE=EQUIPMENT_FREE.EQFR_EQUIPMENT WHERE EREQ_ENTITY='TPM' AND EREQ_EQUIPMENT_STATUS='N' and EREQ_LEVEL=2 AND EQFR_DATE1 >TO_DATE ('12/31/2017 00:00:00', 'MM/DD/YYYY HH24:MI:SS') ORDER BY EQUIPMENT, DATE_ desc;
Donc pour cet effet j'ai créé une requête afin de récupérer toutes les données des deux tables dans une seule vue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE OR REPLACE FORCE VIEW "COSWIN"."VIST_LIGN" ("LIGNE", "DATE_", "TO_LIGNE", "NB_LIGNE") AS select ligne,DATE_, sum(TO_LIGNE) TO_LIGNE, sum(NB) NB_LIGNE from ( select ligne, date_, MAX(t_ouverture) TO_LIGNE, count(*) NB from vist_data group by ligne, date_ ) group by ligne,DATE_ order by date_ desc;
alors j'ai rencontré deux problèmes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT l.ligne,d.EQUIPMENT,d.DESCRIPTION,d.LIGNE,d.ZONE,d.T_OUVERTURE, d.N_OT, l.to_ligne, d.date_ FROM vist_data d, vist_lign l WHERE d.LIGNE = l.ligne and D.date_>TO_DATE ('05/07/2019 00:00:00', 'MM/DD/YYYY HH24:MI:SS') AND d.ligne IN ('CMS-LIGN-02','CMS-LIGN-05') GROUP BY l.ligne,d.EQUIPMENT,d.DESCRIPTION,d.LIGNE,d.ZONE,d.T_OUVERTURE, d.N_OT, l.to_ligne, d.date_;
1) Temps d'exécution trop long
2) Les données récupérées de la table vist_lign sont erronée
3) les enregistrements ce multiple 33 fois par équipement et pour même date
Est ce quelqu'un aurait une idée pour palier à ceci
Merci d'avance de votre aide
Partager