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
|
create table DIM_DATE
(
ID_DATE NUMBER(8) not null,
DATE_DU_JOUR DATE not null,
ANNEE_CALENDAIRE NUMBER(4),
SEMESTRE NUMBER(1),
LIBELLE_SEMESTRE VARCHAR2(250 CHAR),
TRIMESTRE NUMBER(1),
LIBELLE_TRIMESTRE VARCHAR2(250 CHAR),
ANNEE_MOIS NUMBER(6),
MOIS NUMBER(2),
LIBELLE_MOIS VARCHAR2(250 CHAR),
SEMAINE NUMBER(2),
JOUR NUMBER(2),
LIBELLE_JOUR VARCHAR2(250 CHAR),
JOUR_FERIE CHAR(3 CHAR),
JOUR_OUVRE CHAR(3 CHAR),
QUANTIEME_JOUR NUMBER
);
INSERT INTO DIM_DATE (ID_DATE, DATE_DU_JOUR, ANNEE_CALENDAIRE, SEMESTRE, LIBELLE_SEMESTRE, TRIMESTRE, LIBELLE_TRIMESTRE, ANNEE_MOIS,MOIS, LIBELLE_MOIS, SEMAINE, JOUR, LIBELLE_JOUR, JOUR_FERIE, JOUR_OUVRE, QUANTIEME_JOUR)
SELECT
TO_NUMBER(TO_CHAR(DT_CAL, 'YYYYMMDD')) AS ID_CALENDRIER,
DT_CAL AS DATE_DU_JOUR,
TO_NUMBER(TO_CHAR(DT_CAL, 'YYYY')) AS ANNEE_CALENDAIRE,
ROUND(TO_NUMBER(TO_CHAR(DT_CAL, 'Q'))/2) AS SEMESTRE,
CASE ROUND(TO_NUMBER(TO_CHAR(DT_CAL, 'Q'))/2) WHEN 1 THEN '1er semestre' ELSE '2ème semestre' END AS LIBELLE_SEMESTRE,
TO_NUMBER(TO_CHAR(DT_CAL, 'Q')) AS TRIMESTRE,
CASE TO_NUMBER(TO_CHAR(DT_CAL, 'Q')) WHEN 1 THEN '1er trimestre' ELSE TO_NUMBER(TO_CHAR(DT_CAL, 'Q')) || 'ème trimestre' END AS LIBELLE_TRIMESTRE,
TO_NUMBER(TO_NUMBER(TO_CHAR(DT_CAL, 'YYYY')) || LPAD(TO_CHAR(DT_CAL, 'MM'), 2, '0')) AS ANNEE_MOIS,
TO_NUMBER(TO_CHAR(DT_CAL, 'MM')) AS MOIS,
TO_CHAR(DT_CAL, 'Month') AS LIBELLE_MOIS,
TO_NUMBER(TO_CHAR(DT_CAL, 'IW')) AS SEMAINE,
TO_NUMBER(TO_CHAR(DT_CAL, 'DD')) AS JOUR,
TO_CHAR(DT_CAL, 'Day') AS LIBELLE_JOUR,
CASE WHEN TO_CHAR(DT_CAL, 'D') IN ('6', '7') THEN 'Oui' ELSE 'Non' END AS JOUR_FERIE,
CASE WHEN TO_CHAR(DT_CAL, 'D') IN ('6', '7') THEN 'Non' ELSE 'Oui' END AS JOUR_OUVRE,
NUM_JOUR AS QUANTIEME_JOUR
FROM
(
SELECT to_date('19000101','YYYYMMDD') + (rownum - 1) AS DT_CAL, rownum AS NUM_JOUR
FROM dual
connect BY to_date('19000101','YYYYMMDD') + (rownum - 1) <= to_date('29991231','YYYYMMDD')
);
COMMIT; |
Partager