Files
Customer/DJIN/djin.sql
Maarten van der Heide 508097fa69 DJIN#37160 KPI-rapportages/exports (per week, met aantallen en een nieuwe)
svn path=/Customer/trunk/; revision=32320
2017-01-11 14:25:46 +00:00

2090 lines
101 KiB
MySQL
Raw Blame History

-- Script containing customer specific db-configuration for DJIN.
-- (c) 2015 SG|facilitor bv
--
-- Support: +31 53 4800700
set echo on
spool xdjin.lst
CREATE OR REPLACE VIEW djin_v_rap_import_log
(
fclt_f_applicatie,
datum,
fclt_f_status,
omschrijving,
hint
)
AS
SELECT COALESCE (fac_import_app_code, imp_log_applicatie),
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi'),
imp_log_status,
imp_log_omschrijving,
imp_log_hint
FROM imp_log il1, fac_import fi1, fac_import_app fia1
WHERE il1.fac_import_key = fi1.fac_import_key(+)
AND fi1.fac_import_app_key = fia1.fac_import_app_key(+)
AND NOT EXISTS
(SELECT 1
FROM imp_log il2, fac_import fi2
WHERE il2.fac_import_key = fi2.fac_import_key
AND fi2.fac_import_app_key = fi1.fac_import_app_key
AND il2.fac_import_key > il1.fac_import_key);
/* Formatted on 13-4-2015 13:58:02 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE djin_import_prs (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000) := '-';
v_errorhint VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
BEGIN
v_errorhint := 'Generieke import';
-- Vestiging-kolom kopieren naar extra kolom 10 (= kenmerk1)!
UPDATE fac_imp_file i
SET i.fac_imp_file_line =
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line || ';', ';', 1, 9))
|| ';'
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 2)
+ 1, INSTR (fac_imp_file_line, ';', 1, 3)
- INSTR (fac_imp_file_line, ';', 1, 2)
- 1)
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
-- Vestiging-kolom resetten (op 'XXX' want verplicht)!
UPDATE fac_imp_file i
SET i.fac_imp_file_line =
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 2))
|| '"XXX"'
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 3))
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
-- Functie-kolom kopieren naar extra kolom 11 (= kenmerk2)!
UPDATE fac_imp_file i
SET i.fac_imp_file_line =
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line || ';', ';', 1, 10))
|| ';'
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 3)
+ 1, INSTR (fac_imp_file_line, ';', 1, 4)
- INSTR (fac_imp_file_line, ';', 1, 3)
- 1)
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
-- Functie-kolom resetten (op 'XXX' want verplicht)!
UPDATE fac_imp_file i
SET i.fac_imp_file_line =
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 3))
|| '"XXX"'
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 4))
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
-- DJIN#36237: Telefoonnr-kolom negeren=wissen!
UPDATE fac_imp_file i
SET i.fac_imp_file_line =
SUBSTR (fac_imp_file_line, 1, INSTR (fac_imp_file_line, ';', 1, 6))
|| '""'
|| SUBSTR (fac_imp_file_line, INSTR (fac_imp_file_line, ';', 1, 7))
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
-- De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
--"Accountnaam";"Achternaam";"Vestiging";"Functie";"Voornaam";"E-mail";"Telefoonnr";"Werkplekruimte";"Afdeling"
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;3;2;0;5;'
|| '0;0;0;0;0;7;0;6;0;0;'
|| '4;1;0;0;0;0;10;11;8;9;'
|| '0;0;0;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'%"Accountnaam";"Achternaam";"Vestiging";"Functie";"Voornaam";"E-mail";"Telefoonnr";"Werkplekruimte";"Afdeling"%');
-- Klantspecifieke aanpassingen.
-- Locatie/Gebouw/Verdieping/Ruimte bepalen via Vestiging-kolom -> Eigen tabel (key=1) ->
-- Gebouw en daaronder Ruimte '_000' op Verdieping 0!
-- Als persoon al een WP heeft op import-vestiging, dan is dat de juiste en blijft deze
-- (handmatig gecorrigeerde WP) ongewijzigd. In alle andere gevallen verhuist persoon naar
-- Eventuele WPs onder andere vestigingen dan import-vestiging blijven ook ongewijzigd!
UPDATE fac_imp_perslid i
SET i.alg_locatie_code =
(SELECT il.alg_locatie_code
FROM fac_v_aanwezigusrdata ud, -- Mapping AD-code -> gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il
WHERE ud.fac_usrtab_key = 1
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)),
i.alg_gebouw_code =
(SELECT ig.alg_gebouw_code
FROM fac_v_aanwezigusrdata ud, -- Mapping AD-code -> gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il
WHERE ud.fac_usrtab_key = 1
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)),
i.alg_verdieping_volgnr = 0,
i.alg_ruimte_nr = '_000'
WHERE NOT EXISTS -- Nog geen werkplek binnen Vestiging=District!
(SELECT 1
FROM fac_v_aanwezigusrdata ud, -- Mapping AD-code -> gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il,
prs_v_aanwezigperslid p,
prs_perslidwerkplek pw,
prs_werkplek cw,
alg_v_aanwezigruimte cr,
alg_verdieping cv,
alg_gebouw cg,
alg_locatie cl
WHERE ud.fac_usrtab_key = 1
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) = UPPER (ud.fac_usrdata_omschr)
AND alg_locatie_key < il.alg_locatie_key)
AND p.prs_perslid_oslogin = i.prs_perslid_oslogin
AND p.prs_perslid_key = pw.prs_perslid_key
AND pw.prs_werkplek_key = cw.prs_werkplek_key
AND cw.prs_alg_ruimte_key = cr.alg_ruimte_key
AND cr.alg_verdieping_key = cv.alg_verdieping_key
AND cv.alg_gebouw_key = cg.alg_gebouw_key
AND cg.alg_locatie_key = cl.alg_locatie_key
AND cl.alg_district_key = il.alg_district_key);
COMMIT;
-- Locatie/Gebouw/Verdieping/Ruimte altijd volgens Werkplekruimte-kolom indien gevuld (dus ook
-- als formaat niet klopt, want dat resulteert tenminste -normaal gesproken- in foutlogging)!
UPDATE fac_imp_perslid i
SET i.alg_locatie_code =
(SELECT il.alg_locatie_code
FROM alg_v_aanweziggebouw ig, alg_locatie il
WHERE UPPER (ig.alg_gebouw_code) =
UPPER (SUBSTR (prs_kenmerk3, 1, INSTR (prs_kenmerk3, '-', 1, 1) - 1))
AND ig.alg_locatie_key = il.alg_locatie_key
AND NOT EXISTS
(SELECT 1
FROM alg_v_aanweziggebouw
WHERE UPPER (alg_gebouw_code) =
UPPER(SUBSTR (prs_kenmerk3, 1, INSTR (prs_kenmerk3, '-', 1, 1) - 1))
AND alg_locatie_key < il.alg_locatie_key)),
i.alg_gebouw_code =
SUBSTR (SUBSTR (prs_kenmerk3, 1, INSTR (prs_kenmerk3, '-', 1, 1) - 1), 1, 12),
i.alg_verdieping_volgnr =
fac.safe_to_number (SUBSTR (SUBSTR (prs_kenmerk3, INSTR (prs_kenmerk3, '-', 1, 1)
+ 1, INSTR (prs_kenmerk3, '-', 1, 2)
- INSTR (prs_kenmerk3, '-', 1, 1)
- 1), 1, 3)),
i.alg_ruimte_nr =
SUBSTR (SUBSTR (prs_kenmerk3, INSTR (prs_kenmerk3, '-', 1, 2) + 1), 1, 10)
WHERE i.prs_kenmerk3 IS NOT NULL;
COMMIT;
-- Afdeling bepalen via Vestiging-kolom -> ET (key=1) -> Gebouw -> Locatie -> District ->
-- Afdeling-3 (= Vestiging in organisatieboom)!
UPDATE fac_imp_perslid i
SET i.prs_afdeling_naam =
(SELECT MAX (a.prs_afdeling_upper)
FROM fac_v_aanwezigusrdata ud, -- Mapping AD-code -> gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il,
alg_district id,
prs_v_aanwezigafdeling a
WHERE ud.fac_usrtab_key = 1
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND il.alg_district_key = id.alg_district_key
AND UPPER (id.alg_district_omschrijving) = UPPER (a.prs_afdeling_omschrijving)
AND a.prs_bedrijf_key = 2
AND a.niveau = 3)
WHERE i.prs_perslid_oslogin IS NOT NULL
AND EXISTS
(SELECT 1
FROM fac_v_aanwezigusrdata ud, -- Mapping AD-code -> gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il,
alg_district id,
prs_v_aanwezigafdeling a
WHERE ud.fac_usrtab_key = 1
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND il.alg_district_key = id.alg_district_key
AND UPPER (id.alg_district_omschrijving) = UPPER (a.prs_afdeling_omschrijving)
AND a.prs_bedrijf_key = 2
AND a.niveau = 3);
COMMIT;
-- Afdeling 'ONB'; als Vestiging-kolom wel in ET (key=1), maar mapping op Afdeling-3 niet
-- mogelijk!
UPDATE fac_imp_perslid i
SET i.prs_afdeling_naam = 'ONB'
WHERE i.prs_perslid_oslogin IS NOT NULL
AND EXISTS
(SELECT 1
FROM fac_v_aanwezigusrdata ud -- Mapping AD-code -> gebouwcode
WHERE ud.fac_usrtab_key = 1
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1))
AND NOT EXISTS
(SELECT 1
FROM fac_v_aanwezigusrdata ud, -- Mapping AD-code -> gebouwcode
alg_v_aanweziggebouw ig,
alg_locatie il,
alg_district id,
prs_v_aanwezigafdeling a
WHERE ud.fac_usrtab_key = 1
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1)
AND UPPER (ud.fac_usrdata_omschr) = UPPER (ig.alg_gebouw_code)
AND ig.alg_locatie_key = il.alg_locatie_key
AND il.alg_district_key = id.alg_district_key
AND UPPER (id.alg_district_omschrijving) = UPPER (a.prs_afdeling_omschrijving)
AND a.prs_bedrijf_key = 2
AND a.niveau = 3);
COMMIT;
-- Afdeling altijd volgens Afdeling-kolom indien gevuld!
UPDATE fac_imp_perslid i
SET i.prs_afdeling_naam = SUBSTR (i.prs_kenmerk4, 1, 10)
WHERE i.prs_kenmerk4 IS NOT NULL;
COMMIT;
-- DJIN#36237: Functie-kolom altijd op 'Onbekend'!
--UPDATE fac_imp_perslid i
-- SET i.prs_srtperslid_omschrijving = COALESCE (i.prs_kenmerk2, 'Onbekend');
UPDATE fac_imp_perslid i
SET i.prs_srtperslid_omschrijving = 'Onbekend';
COMMIT;
-- DJIN#36237: Telefoon-kolom zoals in FACILITOR (voor import-doelgroep)!
UPDATE fac_imp_perslid i
SET i.prs_perslid_telefoonnr =
(SELECT p.prs_perslid_telefoonnr
FROM prs_perslid p
WHERE UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)),
i.prs_perslid_mobiel =
(SELECT p.prs_perslid_mobiel
FROM prs_perslid p
WHERE UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin))
WHERE EXISTS
(SELECT 1
FROM prs_perslid p
WHERE p.prs_perslid_telefoonnr IS NOT NULL
AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin));
COMMIT;
DELETE FROM fac_imp_perslid i
WHERE i.prs_perslid_oslogin IS NULL
OR NOT EXISTS
(SELECT 1
FROM fac_v_aanwezigusrdata ud -- Mapping AD-code -> gebouwcode
WHERE ud.fac_usrtab_key = 1
AND UPPER (ud.fac_usrdata_code) = UPPER (i.prs_kenmerk1));
COMMIT;
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
fac.imp_writelog (
p_import_key,
'S',
'Persoon: aantal te verwerken regels: ' || TO_CHAR (v_count),
'');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ') ';
fac.imp_writelog (p_import_key,
'E',
v_errormsg || v_errorhint,
'Inleesproces personen afgebroken!');
END djin_import_prs;
/
CREATE OR REPLACE PROCEDURE djin_update_prs (p_import_key IN NUMBER)
AS
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een e-mail
c_max_delta_percentage NUMBER (10) := 25; -- 25%!
v_count_prs_import NUMBER (10); -- #actieve personen na import!
v_count_prs_actual NUMBER (10); -- #actieve personen voor import!
-- Let op! Personen die niet meer in dienst zijn -> niet in fac_imp_perslid!
-- Dubbele oslogins? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_oslogin
FROM prs_v_aanwezigperslid p
WHERE (p.prs_perslid_oslogin IS NULL
OR p.prs_perslid_oslogin NOT LIKE '\_%' ESCAPE '\') -- ' tbv. opmaak
AND p.prs_perslid_oslogin2 IS NULL
AND NOT EXISTS
(SELECT 1
FROM fac_imp_perslid i
WHERE UPPER (i.prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin))
ORDER BY 2, 1;
BEGIN
-- Bepaal oslogin-match tussen FACILITOR en RECENT importbestand ofwel het aantal
-- actieve personen na import.
-- RECENT betekent niet meer dan een kwartiertje oud (14,4 minuten); dit voorkomt
-- dat - als er geen nieuw importbestand is aangeleverd - telkens dezelfde fouten
-- worden gerapporteerd (nl. op basis van een oud bestand in FAC_IMP_PERSLID).
--SELECT COUNT ( * )
-- INTO v_count_prs_import
-- FROM prs_v_aanwezigperslid p, fac_imp_perslid i
-- WHERE p.prs_perslid_oslogin IS NOT NULL
-- AND UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin);
SELECT COUNT (DISTINCT prs_perslid_oslogin)
INTO v_count_prs_import
FROM fac_imp_perslid;
-- Bepaal huidig aantal actieve personen in FACILITOR.
SELECT DECODE (COUNT ( * ), 0, 1, COUNT ( * ))
INTO v_count_prs_actual
FROM prs_v_aanwezigperslid
WHERE prs_perslid_oslogin IS NOT NULL;
IF (TRUNC ( (v_count_prs_import / v_count_prs_actual) * 100) < (100 - c_max_delta_percentage))
THEN
fac.imp_writelog (
p_import_key,
'E',
'Verschil tussen huidig aantal en te importeren aantal personen te groot; zie specificatie!',
'- max. verschilpercentage = ['
|| TO_CHAR (c_max_delta_percentage)
|| '%]'
|| CHR (13) || CHR (10)
|| '- #personen/import = ['
|| TO_CHAR (v_count_prs_import)
|| ']'
|| CHR (13) || CHR (10)
|| '- #personen/huidig = ['
|| TO_CHAR (v_count_prs_actual)
|| ']');
RETURN;
END IF;
-- Generieke update.
prs.update_perslid (p_import_key, 'LOGIN', 'D');
-- Verwijder personen die niet meer in de import voorkomen.
FOR rec IN c_del
LOOP
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END LOOP;
-- Verwijder ongebruikte functies; deze import bepaalt de functies!
DELETE FROM prs_srtperslid sp
WHERE NOT EXISTS
(SELECT 1
FROM prs_perslid p
WHERE p.prs_srtperslid_key = sp.prs_srtperslid_key);
COMMIT;
END djin_update_prs;
/
-- Dummy export NACHTWERK!
/* Formatted on 26-5-2016 11:05:50 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE djin_select_nachtwerk (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR c_afspraak
IS
SELECT bez_afspraak_key
FROM bez_afspraak
WHERE bez_afspraak_datum < TRUNC (SYSDATE - 180)
ORDER BY bez_afspraak_key;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_del NUMBER (10);
BEGIN
v_count_del := 0;
FOR rec IN c_afspraak
LOOP
-- Delete alle kenmerkwaarden van bezoekers bij te verwijderen afspraken.
DELETE FROM bez_kenmerkwaarde kw
WHERE EXISTS
(SELECT 1
FROM bez_bezoekers
WHERE bez_bezoekers_key = kw.bez_bezoekers_key
AND bez_afspraak_key = rec.bez_afspraak_key);
-- Delete alle bezoekers-tracking bij te verwijderen afspraken.
DELETE FROM fac_tracking t
WHERE t.fac_srtnotificatie_key IN (28, 29, 30, 31, 32) -- BEZBAD/BEZDON/BEZDO2/BEZOUT/BEZOU2
AND EXISTS
(SELECT 1
FROM bez_bezoekers
WHERE bez_bezoekers_key = t.fac_tracking_refkey
AND bez_afspraak_key = rec.bez_afspraak_key);
-- Delete alle bezoekers bij te verwijderen afspraken.
DELETE FROM bez_bezoekers
WHERE bez_afspraak_key = rec.bez_afspraak_key;
-- Delete alle afspraak-tracking bij te verwijderen afspraken.
DELETE FROM fac_tracking
WHERE fac_srtnotificatie_key IN (26, 27, 128) -- BEZMUT/BEZUPD/BEZMAI
AND fac_tracking_refkey = rec.bez_afspraak_key;
-- Delete alle te verwijderen afspraken.
DELETE FROM bez_afspraak
WHERE bez_afspraak_key = rec.bez_afspraak_key;
v_count_del := v_count_del + 1;
--fac.trackaction ('#BEZUPD', rec.bez_afspraak_key, NULL, v_nu, v_txt_anoniem);
END LOOP;
fac.writelog (p_applname,
'S',
'Afspraken/#verwijderd: ' || TO_CHAR (v_count_del),
'');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Proces NACHTWERK afgebroken!',
v_errormsg);
COMMIT;
END djin_select_nachtwerk;
/
/* Formatted on 17-4-2015 17:30:14 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW DJIN_V_GRAPH_MLDOPEN_VAKGRP
(
FCLT_XAS_,
FCLT_YAS_, -- groen=op tijd
FCLT_YAS2_, -- oranje=te laat
VOLGORDE
)
AS
SELECT x.vakgroep_oms,
x.optijd groen,
x.totaal - x.optijd rood,
TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde
FROM ( SELECT md.ins_discipline_key,
sd.ins_srtdiscipline_prefix
|| '-'
|| md.ins_discipline_omschrijving
vakgroep_oms,
COUNT ( * ) totaal,
SUM(DECODE (
SIGN(m.mld_melding_einddatum_std
- TRUNC (SYSDATE, 'mi')),
-1,
0,
1))
optijd
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd
WHERE m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (3, 4)
GROUP BY md.ins_discipline_key,
sd.ins_srtdiscipline_prefix
|| '-'
|| md.ins_discipline_omschrijving) x
UNION ALL -- Extra kolom zodat voorgaande kolommen helemaal getoond?
SELECT ' ',
0,
0,
'999999'
FROM DUAL;
CREATE OR REPLACE VIEW DJIN_V_GRAPH_ORDOPEN_VAKGRP
(
FCLT_XAS_,
FCLT_YAS_, -- groen=op tijd
FCLT_YAS2_, -- oranje=te laat
VOLGORDE
)
AS
SELECT x.vakgroep_oms,
x.optijd groen,
x.totaal - x.optijd rood,
TO_CHAR (999999 - x.totaal) || x.vakgroep_oms volgorde
FROM ( SELECT md.ins_discipline_key,
sd.ins_srtdiscipline_prefix
|| '-'
|| md.ins_discipline_omschrijving
vakgroep_oms,
COUNT ( * ) totaal,
SUM(DECODE (
SIGN(m.mld_melding_einddatum_std
- TRUNC (SYSDATE, 'mi')),
-1,
0,
1))
optijd
FROM mld_opdr o,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd
WHERE o.mld_statusopdr_key IN (3, 4, 5, 8, 10) -- 3-Ter fiattering, 4-Gefiatteerd, 5-Uitgegeven, 8-Geaccepteerd, 10-Ter goedkeuring
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (3, 4)
GROUP BY md.ins_discipline_key,
sd.ins_srtdiscipline_prefix
|| '-'
|| md.ins_discipline_omschrijving) x
UNION ALL -- Extra kolom zodat voorgaande kolommen helemaal getoond?
SELECT ' ',
0,
0,
'999999'
FROM DUAL;
CREATE OR REPLACE VIEW DJIN_V_GRAPH_MLDCLOSE_MND
(
FCLT_XAS_,
FCLT_YAS_OP_TIJD, -- groen=op tijd
FCLT_YAS2_TE_LAAT, -- oranje=te laat
VOLGORDE
)
AS
SELECT DECODE (SUBSTR (x.mnd, 5, 2),
'01', 'Januari',
'02', 'Februari',
'03', 'Maart',
'04', 'April',
'05', 'Mei',
'06', 'Juni',
'07', 'Juli',
'08', 'Augustus',
'09', 'September',
'10', 'Oktober',
'11', 'November',
'December'),
x.optijd groen,
x.totaal - x.optijd rood,
x.mnd volgorde
FROM ( SELECT TO_CHAR (t.fac_tracking_datum, 'yyyymm') mnd,
COUNT ( * ) totaal,
SUM(DECODE (
SIGN(m.mld_melding_einddatum_std
- TRUNC (t.fac_tracking_datum, 'mi')),
-1,
0,
1))
optijd
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd
WHERE t.fac_srtnotificatie_key IN (38, 44) -- MLDAFM/MLDREJ
AND t.fac_tracking_datum BETWEEN ADD_MONTHS (
TRUNC (SYSDATE, 'mm'),
-11)
AND SYSDATE
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (3, 4)
GROUP BY TO_CHAR (t.fac_tracking_datum, 'yyyymm')) x
UNION ALL -- Extra kolom zodat voorgaande kolommen helemaal getoond?
SELECT ' ',
0,
0,
'999999'
FROM DUAL;
CREATE OR REPLACE VIEW DJIN_V_GRAPH_ORDCLOSE_MND
(
FCLT_XAS_,
FCLT_YAS_OP_TIJD, -- groen=op tijd
FCLT_YAS2_TE_LAAT, -- oranje=te laat
VOLGORDE
)
AS
SELECT DECODE (SUBSTR (x.mnd, 5, 2),
'01', 'Januari',
'02', 'Februari',
'03', 'Maart',
'04', 'April',
'05', 'Mei',
'06', 'Juni',
'07', 'Juli',
'08', 'Augustus',
'09', 'September',
'10', 'Oktober',
'11', 'November',
'December'),
x.optijd groen,
x.totaal - x.optijd rood,
x.mnd volgorde
FROM ( SELECT TO_CHAR (t.fac_tracking_datum, 'yyyymm') mnd,
COUNT ( * ) totaal,
SUM(DECODE (
SIGN(m.mld_melding_einddatum_std
- TRUNC (t.fac_tracking_datum, 'mi')),
-1,
0,
1))
optijd
FROM fac_tracking t,
mld_opdr o,
mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd
WHERE t.fac_srtnotificatie_key IN (58, 69) -- ORDAFM/ORDCAN
AND t.fac_tracking_datum BETWEEN ADD_MONTHS (
TRUNC (SYSDATE, 'mm'),
-11)
AND SYSDATE
AND t.fac_tracking_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (3, 4)
GROUP BY TO_CHAR (t.fac_tracking_datum, 'yyyymm')) x
UNION ALL -- Extra kolom zodat voorgaande kolommen helemaal getoond?
SELECT ' ',
0,
0,
'999999'
FROM DUAL;
/* Formatted on 20-4-2015 17:02:28 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW DJIN_V_GRAPH_MLDOPEN_DISTRICT
(
FCLT_XAS_,
FCLT_YAS_, -- groen=op tijd
FCLT_YAS2_, -- oranje=te laat
VOLGORDE
)
AS
SELECT x.alg_district_omschrijving,
x.optijd groen,
x.totaal - x.optijd rood,
TO_CHAR (999999 - x.totaal) || x.alg_district_omschrijving volgorde
FROM ( SELECT d.alg_district_key,
d.alg_district_omschrijving,
COUNT ( * ) totaal,
SUM(DECODE (
SIGN(m.mld_melding_einddatum_std
- TRUNC (SYSDATE, 'mi')),
-1,
0,
1))
optijd
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
alg_locatie l,
alg_district d
WHERE m.mld_melding_status IN (2, 3, 4, 7, 0) -- 2-Ingevoerd, 3-Ingezien, 4-Geaccepteerd, 7-Uitgegeven, 0-Pending
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (3, 4)
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
GROUP BY d.alg_district_key, d.alg_district_omschrijving) x
UNION ALL -- Extra kolom zodat voorgaande kolommen helemaal getoond?
SELECT ' ',
0,
0,
'999999'
FROM DUAL;
/* Formatted on 31-5-2016 16:42:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW djin_v_rap_personen_groepen
(
fclt_f_naam,
email,
fclt_f_login,
fclt_f_afdeling,
fclt_f_complex,
fclt_f_gebouw,
verdieping,
ruimte,
fclt_f_cluster,
fclt_f_autorisatiegroep,
aantal_rechten,
fclt_f_alleen_fe,
fclt_f_alt_login
)
AS
SELECT x.prs_perslid_naam_full,
x.prs_perslid_email,
x.prs_perslid_oslogin,
x.prs_afdeling_naam6,
pr.alg_locatie_code,
pr.alg_gebouw_code,
pr.alg_verdieping_code,
pr.alg_ruimte_nr,
cc.fac_usrdata_omschr,
pgr.fac_groep_omschrijving,
TO_CHAR (pgr.aantal),
DECODE (pg.aantal, NULL, 'Ja', 'Nee') alleen_fe,
DECODE (x.prs_perslid_oslogin2, NULL, 'Nee', 'Ja') alt_login
FROM (SELECT p.prs_perslid_key,
p.prs_perslid_email,
pf.prs_perslid_naam_full,
p.prs_perslid_oslogin,
p.prs_perslid_oslogin2,
a.prs_afdeling_naam6
FROM prs_perslid p, prs_v_perslid_fullnames_all pf, prs_v_afdeling_fullnames a
WHERE p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key) x
LEFT JOIN (SELECT pw.prs_perslid_key,
wg.alg_locatie_key,
wg.alg_locatie_code,
wg.alg_gebouw_code,
wg.alg_verdieping_code,
wg.alg_ruimte_nr
FROM prs_perslidwerkplek pw, prs_v_werkplek_gegevens wg
WHERE pw.prs_werkplek_key = wg.prs_werkplek_key) pr -- PersoonRuimte
ON x.prs_perslid_key = pr.prs_perslid_key
LEFT JOIN (SELECT ok.alg_onrgoed_key, ud.fac_usrdata_omschr
FROM alg_v_aanwezigonrgoedkenmerk ok, fac_usrdata ud
WHERE ok.alg_onrgoed_niveau = 'L' -- Kenmerk van Complex
AND ok.alg_kenmerk_key = 1000 -- Cluster
AND ok.alg_onrgoedkenmerk_waarde = TO_CHAR (ud.fac_usrdata_key)) cc -- ComplexCluster
ON pr.alg_locatie_key = cc.alg_onrgoed_key
LEFT JOIN ( SELECT prs_perslid_key, COUNT ( * ) aantal
FROM fac_gebruikersgroep
WHERE fac_groep_key != 1 -- _Default
GROUP BY prs_perslid_key) pg -- PersoonGroepen
ON x.prs_perslid_key = pg.prs_perslid_key
LEFT JOIN ( SELECT gg.prs_perslid_key, g.fac_groep_omschrijving, COUNT ( * ) aantal
FROM fac_gebruikersgroep gg, fac_groep g, fac_groeprechten gr
WHERE gg.fac_groep_key != 1 -- _Default
AND gg.fac_groep_key = g.fac_groep_key
AND g.fac_groep_key = gr.fac_groep_key
GROUP BY gg.prs_perslid_key, g.fac_groep_omschrijving) pgr -- PersoonGroepRechten
ON x.prs_perslid_key = pgr.prs_perslid_key;
-- DJIN#37160: KPI-rapportages (incl. exports via NACHTWERK-taak)
-- 90=PRSSYS
/* Formatted on 30-8-2016 11:42:24 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW djin_v_rap_kpi_mld_std
(
fclt_3d_locatie_key,
--fclt_f_maand,
fclt_f_week,
fclt_f_type,
fclt_f_vakgroep,
fclt_f_cluster,
fclt_f_vestiging,
fclt_f_complex,
n_tot_mld_std_cx,
n_ac_mld_std_cx,
n_uv_mld_std_cx,
ac_mld_std_nl,
ac_mld_std_cl,
ac_mld_std_vt,
ac_mld_std_cx,
uv_mld_std_nl,
uv_mld_std_cl,
uv_mld_std_vt,
uv_mld_std_cx
)
AS
WITH mldstdcx -- Per vakgroep/complex onder vakgroeptype=3+4 de STD-meldingen=normaal+laag op MLDAFM-tijd!
AS ( SELECT l.alg_locatie_key,
--TO_CHAR (t.fac_tracking_datum, 'yyyy-mm') maand,
TO_CHAR (t.fac_tracking_datum, 'yyyy-iw') week,
sd.ins_srtdiscipline_prefix type,
md.ins_discipline_omschrijving vakgroep,
COALESCE (ud.fac_usrdata_omschr, 'Onbekend') cl,
d.alg_district_omschrijving vt,
l.alg_locatie_omschrijving cx,
COUNT ( * ) totaal,
SUM (DECODE (
SIGN(m.mld_melding_acceptdatum_std - fac.gettrackingdate ('MLDACP', m.mld_melding_key)),
-1, 0,
1))
acoptijd,
SUM (DECODE (
SIGN(m.mld_melding_einddatum_std - TRUNC (t.fac_tracking_datum, 'mi')),
-1, 0,
1))
uvoptijd
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm, -- Ook verwijderde meldingen,
mld_discipline md, -- en verwijderde vakgroepen,
ins_srtdiscipline sd, -- en verwijderde vakgroeptypen,
alg_locatie l, -- en verwijderde locaties,
alg_district d, -- en verwijderde districten!
alg_v_aanwezigonrgoedkenmerk ok,
fac_usrdata ud
WHERE t.fac_srtnotificatie_key = 38 -- MLDAFM
--AND t.fac_tracking_datum > ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25)
AND t.fac_tracking_datum > TRUNC (SYSDATE, 'iw') - 770 -- Afgelopen 110 weken
AND t.fac_tracking_refkey = m.mld_melding_key
--AND m.mld_melding_status IN (5, 6) -- Afgemeld/Verwerkt
AND m.mld_melding_start_key IS NULL -- Muv. vervolgmeldingen
AND m.mld_melding_spoed IN (3, 4) -- Normaal/Laag
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (3, 4) -- Melding Facilitair/Aanvraag
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ok.alg_onrgoed_key(+)
AND ok.alg_onrgoed_niveau(+) = 'L'
AND ok.alg_kenmerk_key(+) = 1000 -- Cluster
AND ok.alg_onrgoedkenmerk_waarde = TO_CHAR (ud.fac_usrdata_key(+))
GROUP BY l.alg_locatie_key,
TO_CHAR (t.fac_tracking_datum, 'yyyy-iw'),
sd.ins_srtdiscipline_prefix,
md.ins_discipline_omschrijving,
COALESCE (ud.fac_usrdata_omschr, 'Onbekend'),
d.alg_district_omschrijving,
l.alg_locatie_omschrijving)
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx, -- Per vakgroep per vakgroeptype!
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, type, vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldstdcx
GROUP BY week, type, vakgroep) nl
LEFT JOIN ( SELECT week, type, vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldstdcx
GROUP BY week, type, vakgroep, cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, type, vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldstdcx
GROUP BY week, type, vakgroep, cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN (SELECT alg_locatie_key, week, type, vakgroep, cl, vt, cx, totaal, acoptijd, uvoptijd
FROM mldstdcx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt
UNION ALL -- ALLE vakgroepen per vakgroeptype!
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx,
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, type, 'Totaal' vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldstdcx
GROUP BY week, type, 'Totaal') nl
LEFT JOIN ( SELECT week, type, 'Totaal' vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldstdcx
GROUP BY week, type, 'Totaal', cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, type, 'Totaal' vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldstdcx
GROUP BY week, type, 'Totaal', cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN ( SELECT alg_locatie_key, week, type, 'Totaal' vakgroep, cl, vt, cx, SUM (totaal) totaal, SUM (acoptijd) acoptijd, SUM (uvoptijd) uvoptijd
FROM mldstdcx
GROUP BY alg_locatie_key, week, type, 'Totaal', cl, vt, cx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt
UNION ALL -- Per vakgroep over BEIDE vakgroeptypen!
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx,
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, 'Beide' type, vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldstdcx
GROUP BY week, 'Beide', vakgroep) nl
LEFT JOIN ( SELECT week, 'Beide' type, vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldstdcx
GROUP BY week, 'Beide', vakgroep, cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, 'Beide' type, vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldstdcx
GROUP BY week, 'Beide', vakgroep, cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN ( SELECT alg_locatie_key, week, 'Beide' type, vakgroep, cl, vt, cx, SUM (totaal) totaal, SUM (acoptijd) acoptijd, SUM (uvoptijd) uvoptijd
FROM mldstdcx
GROUP BY alg_locatie_key, week, 'Beide', vakgroep, cl, vt, cx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt
UNION ALL -- ALLE vakgroepen over BEIDE vakgroeptypen!
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx,
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, 'Beide' type, 'Totaal' vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldstdcx
GROUP BY week, 'Beide', 'Totaal') nl
LEFT JOIN ( SELECT week, 'Beide' type, 'Totaal' vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldstdcx
GROUP BY week, 'Beide', 'Totaal', cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, 'Beide' type, 'Totaal' vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldstdcx
GROUP BY week, 'Beide', 'Totaal', cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN ( SELECT alg_locatie_key, week, 'Beide' type, 'Totaal' vakgroep, cl, vt, cx, SUM (totaal) totaal, SUM (acoptijd) acoptijd, SUM (uvoptijd) uvoptijd
FROM mldstdcx
GROUP BY alg_locatie_key, week, 'Beide', 'Totaal', cl, vt, cx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt;
CREATE OR REPLACE VIEW djin_v_export_kpi_mld_std
(
result,
result_order
)
AS
SELECT '"week"'
|| ';"type"'
|| ';"vakgroep"'
|| ';"cluster"'
|| ';"vestiging"'
|| ';"complex"'
|| ';"n_tot_mld_std_cx"'
|| ';"n_ac_mld_std_cx"'
|| ';"n_uv_mld_std_cx"'
|| ';"ac_mld_std_nl"'
|| ';"ac_mld_std_cl"'
|| ';"ac_mld_std_vt"'
|| ';"ac_mld_std_cx"'
|| ';"uv_mld_std_nl"'
|| ';"uv_mld_std_cl"'
|| ';"uv_mld_std_vt"'
|| ';"uv_mld_std_cx"',
0
FROM DUAL
UNION ALL
SELECT '"'
|| fclt_f_week
|| '";"'
|| fclt_f_type
|| '";"'
|| fclt_f_vakgroep
|| '";"'
|| fclt_f_cluster
|| '";"'
|| fclt_f_vestiging
|| '";"'
|| fclt_f_complex
|| '";"'
|| n_tot_mld_std_cx
|| '";"'
|| n_ac_mld_std_cx
|| '";"'
|| n_uv_mld_std_cx
|| '";"'
|| ac_mld_std_nl
|| '";"'
|| ac_mld_std_cl
|| '";"'
|| ac_mld_std_vt
|| '";"'
|| ac_mld_std_cx
|| '";"'
|| uv_mld_std_nl
|| '";"'
|| uv_mld_std_cl
|| '";"'
|| uv_mld_std_vt
|| '";"'
|| uv_mld_std_cx
|| '"',
1
FROM djin_v_rap_kpi_mld_std;
CREATE OR REPLACE VIEW djin_v_rap_kpi_mld_urg
(
fclt_3d_locatie_key,
--fclt_f_maand,
fclt_f_week,
fclt_f_type,
fclt_f_vakgroep,
fclt_f_cluster,
fclt_f_vestiging,
fclt_f_complex,
n_tot_mld_urg_cx,
n_ac_mld_urg_cx,
n_uv_mld_urg_cx,
ac_mld_urg_nl,
ac_mld_urg_cl,
ac_mld_urg_vt,
ac_mld_urg_cx,
uv_mld_urg_nl,
uv_mld_urg_cl,
uv_mld_urg_vt,
uv_mld_urg_cx
)
AS
WITH mldurgcx -- Per vakgroep/complex onder vakgroeptype=3+4 de URG-meldingen=kritiek+hoog op MLDAFM-tijd!
AS ( SELECT l.alg_locatie_key,
--TO_CHAR (t.fac_tracking_datum, 'yyyy-mm') maand,
TO_CHAR (t.fac_tracking_datum, 'yyyy-iw') week,
sd.ins_srtdiscipline_prefix type,
md.ins_discipline_omschrijving vakgroep,
COALESCE (ud.fac_usrdata_omschr, 'Onbekend') cl,
d.alg_district_omschrijving vt,
l.alg_locatie_omschrijving cx,
COUNT ( * ) totaal,
SUM (DECODE (
SIGN(m.mld_melding_acceptdatum_std - fac.gettrackingdate ('MLDACP', m.mld_melding_key)),
-1, 0,
1))
acoptijd,
SUM (DECODE (
SIGN(m.mld_melding_einddatum_std - TRUNC (t.fac_tracking_datum, 'mi')),
-1, 0,
1))
uvoptijd
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm, -- Ook verwijderde meldingen,
mld_discipline md, -- en verwijderde vakgroepen,
ins_srtdiscipline sd, -- en verwijderde vakgroeptypen,
alg_locatie l, -- en verwijderde locaties,
alg_district d, -- en verwijderde districten!
alg_v_aanwezigonrgoedkenmerk ok,
fac_usrdata ud
WHERE t.fac_srtnotificatie_key = 38 -- MLDAFM
--AND t.fac_tracking_datum > ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25)
AND t.fac_tracking_datum > TRUNC (SYSDATE, 'iw') - 770 -- Afgelopen 110 weken
AND t.fac_tracking_refkey = m.mld_melding_key
--AND m.mld_melding_status IN (5, 6) -- Afgemeld/Verwerkt
AND m.mld_melding_start_key IS NULL -- Muv. vervolgmeldingen
AND m.mld_melding_spoed IN (1, 2) -- Normaal/Laag
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (3, 4) -- Melding Facilitair/Aanvraag
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ok.alg_onrgoed_key(+)
AND ok.alg_onrgoed_niveau(+) = 'L'
AND ok.alg_kenmerk_key(+) = 1000 -- Cluster
AND ok.alg_onrgoedkenmerk_waarde = TO_CHAR (ud.fac_usrdata_key(+))
GROUP BY l.alg_locatie_key,
TO_CHAR (t.fac_tracking_datum, 'yyyy-iw'),
sd.ins_srtdiscipline_prefix,
md.ins_discipline_omschrijving,
COALESCE (ud.fac_usrdata_omschr, 'Onbekend'),
d.alg_district_omschrijving,
l.alg_locatie_omschrijving)
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx, -- Per vakgroep per vakgroeptype!
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, type, vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldurgcx
GROUP BY week, type, vakgroep) nl
LEFT JOIN ( SELECT week, type, vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldurgcx
GROUP BY week, type, vakgroep, cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, type, vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldurgcx
GROUP BY week, type, vakgroep, cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN (SELECT alg_locatie_key, week, type, vakgroep, cl, vt, cx, totaal, acoptijd, uvoptijd
FROM mldurgcx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt
UNION ALL -- ALLE vakgroepen per vakgroeptype!
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx,
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, type, 'Totaal' vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldurgcx
GROUP BY week, type, 'Totaal') nl
LEFT JOIN ( SELECT week, type, 'Totaal' vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldurgcx
GROUP BY week, type, 'Totaal', cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, type, 'Totaal' vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldurgcx
GROUP BY week, type, 'Totaal', cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN ( SELECT alg_locatie_key, week, type, 'Totaal' vakgroep, cl, vt, cx, SUM (totaal) totaal, SUM (acoptijd) acoptijd, SUM (uvoptijd) uvoptijd
FROM mldurgcx
GROUP BY alg_locatie_key, week, type, 'Totaal', cl, vt, cx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt
UNION ALL -- Per vakgroep over BEIDE vakgroeptypen!
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx,
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, 'Beide' type, vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldurgcx
GROUP BY week, 'Beide', vakgroep) nl
LEFT JOIN ( SELECT week, 'Beide' type, vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldurgcx
GROUP BY week, 'Beide', vakgroep, cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, 'Beide' type, vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldurgcx
GROUP BY week, 'Beide', vakgroep, cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN ( SELECT alg_locatie_key, week, 'Beide' type, vakgroep, cl, vt, cx, SUM (totaal) totaal, SUM (acoptijd) acoptijd, SUM (uvoptijd) uvoptijd
FROM mldurgcx
GROUP BY alg_locatie_key, week, 'Beide', vakgroep, cl, vt, cx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt
UNION ALL -- ALLE vakgroepen over BEIDE vakgroeptypen!
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx,
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, 'Beide' type, 'Totaal' vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldurgcx
GROUP BY week, 'Beide', 'Totaal') nl
LEFT JOIN ( SELECT week, 'Beide' type, 'Totaal' vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldurgcx
GROUP BY week, 'Beide', 'Totaal', cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, 'Beide' type, 'Totaal' vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldurgcx
GROUP BY week, 'Beide', 'Totaal', cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN ( SELECT alg_locatie_key, week, 'Beide' type, 'Totaal' vakgroep, cl, vt, cx, SUM (totaal) totaal, SUM (acoptijd) acoptijd, SUM (uvoptijd) uvoptijd
FROM mldurgcx
GROUP BY alg_locatie_key, week, 'Beide', 'Totaal', cl, vt, cx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt;
CREATE OR REPLACE VIEW djin_v_export_kpi_mld_urg
(
result,
result_order
)
AS
SELECT '"week"'
|| ';"type"'
|| ';"vakgroep"'
|| ';"cluster"'
|| ';"vestiging"'
|| ';"complex"'
|| ';"n_tot_mld_urg_cx"'
|| ';"n_ac_mld_urg_cx"'
|| ';"n_uv_mld_urg_cx"'
|| ';"ac_mld_urg_nl"'
|| ';"ac_mld_urg_cl"'
|| ';"ac_mld_urg_vt"'
|| ';"ac_mld_urg_cx"'
|| ';"uv_mld_urg_nl"'
|| ';"uv_mld_urg_cl"'
|| ';"uv_mld_urg_vt"'
|| ';"uv_mld_urg_cx"',
0
FROM DUAL
UNION ALL
SELECT '"'
|| fclt_f_week
|| '";"'
|| fclt_f_type
|| '";"'
|| fclt_f_vakgroep
|| '";"'
|| fclt_f_cluster
|| '";"'
|| fclt_f_vestiging
|| '";"'
|| fclt_f_complex
|| '";"'
|| n_tot_mld_urg_cx
|| '";"'
|| n_ac_mld_urg_cx
|| '";"'
|| n_uv_mld_urg_cx
|| '";"'
|| ac_mld_urg_nl
|| '";"'
|| ac_mld_urg_cl
|| '";"'
|| ac_mld_urg_vt
|| '";"'
|| ac_mld_urg_cx
|| '";"'
|| uv_mld_urg_nl
|| '";"'
|| uv_mld_urg_cl
|| '";"'
|| uv_mld_urg_vt
|| '";"'
|| uv_mld_urg_cx
|| '"',
1
FROM djin_v_rap_kpi_mld_urg;
CREATE OR REPLACE VIEW djin_v_rap_kpi_mld_vvg
(
fclt_3d_locatie_key,
--fclt_f_maand,
fclt_f_week,
fclt_f_type,
fclt_f_vakgroep,
fclt_f_cluster,
fclt_f_vestiging,
fclt_f_complex,
n_tot_mld_vvg_cx,
n_ac_mld_vvg_cx,
n_uv_mld_vvg_cx,
ac_mld_vvg_nl,
ac_mld_vvg_cl,
ac_mld_vvg_vt,
ac_mld_vvg_cx,
uv_mld_vvg_nl,
uv_mld_vvg_cl,
uv_mld_vvg_vt,
uv_mld_vvg_cx
)
AS
WITH mldvvgcx -- Per vakgroep/complex onder vakgroeptype=3+4 de VVG-meldingen (elke spoed) op MLDAFM-tijd!
AS ( SELECT l.alg_locatie_key,
--TO_CHAR (t.fac_tracking_datum, 'yyyy-mm') maand,
TO_CHAR (t.fac_tracking_datum, 'yyyy-iw') week,
sd.ins_srtdiscipline_prefix type,
md.ins_discipline_omschrijving vakgroep,
COALESCE (ud.fac_usrdata_omschr, 'Onbekend') cl,
d.alg_district_omschrijving vt,
l.alg_locatie_omschrijving cx,
COUNT ( * ) totaal,
SUM (DECODE (
SIGN(m.mld_melding_acceptdatum_std - fac.gettrackingdate ('MLDACP', m.mld_melding_key)),
-1, 0,
1))
acoptijd,
SUM (DECODE (
SIGN(m.mld_melding_einddatum_std - TRUNC (t.fac_tracking_datum, 'mi')),
-1, 0,
1))
uvoptijd
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm, -- Ook verwijderde meldingen,
mld_discipline md, -- en verwijderde vakgroepen,
ins_srtdiscipline sd, -- en verwijderde vakgroeptypen,
alg_locatie l, -- en verwijderde locaties,
alg_district d, -- en verwijderde districten!
alg_v_aanwezigonrgoedkenmerk ok,
fac_usrdata ud
WHERE t.fac_srtnotificatie_key = 38 -- MLDAFM
--AND t.fac_tracking_datum > ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25)
AND t.fac_tracking_datum > TRUNC (SYSDATE, 'iw') - 770 -- Afgelopen 110 weken
AND t.fac_tracking_refkey = m.mld_melding_key
--AND m.mld_melding_status IN (5, 6) -- Afgemeld/Verwerkt
AND m.mld_melding_start_key IS NOT NULL -- Vervolgmeldingen
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key IN (3, 4) -- Melding Facilitair/Aanvraag
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ok.alg_onrgoed_key(+)
AND ok.alg_onrgoed_niveau(+) = 'L'
AND ok.alg_kenmerk_key(+) = 1000 -- Cluster
AND ok.alg_onrgoedkenmerk_waarde = TO_CHAR (ud.fac_usrdata_key(+))
GROUP BY l.alg_locatie_key,
TO_CHAR (t.fac_tracking_datum, 'yyyy-iw'),
sd.ins_srtdiscipline_prefix,
md.ins_discipline_omschrijving,
COALESCE (ud.fac_usrdata_omschr, 'Onbekend'),
d.alg_district_omschrijving,
l.alg_locatie_omschrijving)
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx, -- Per vakgroep per vakgroeptype!
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, type, vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldvvgcx
GROUP BY week, type, vakgroep) nl
LEFT JOIN ( SELECT week, type, vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldvvgcx
GROUP BY week, type, vakgroep, cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, type, vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldvvgcx
GROUP BY week, type, vakgroep, cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN (SELECT alg_locatie_key, week, type, vakgroep, cl, vt, cx, totaal, acoptijd, uvoptijd
FROM mldvvgcx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt
UNION ALL -- ALLE vakgroepen per vakgroeptype!
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx,
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, type, 'Totaal' vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldvvgcx
GROUP BY week, type, 'Totaal') nl
LEFT JOIN ( SELECT week, type, 'Totaal' vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldvvgcx
GROUP BY week, type, 'Totaal', cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, type, 'Totaal' vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldvvgcx
GROUP BY week, type, 'Totaal', cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN ( SELECT alg_locatie_key, week, type, 'Totaal' vakgroep, cl, vt, cx, SUM (totaal) totaal, SUM (acoptijd) acoptijd, SUM (uvoptijd) uvoptijd
FROM mldvvgcx
GROUP BY alg_locatie_key, week, type, 'Totaal', cl, vt, cx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt
UNION ALL -- Per vakgroep over BEIDE vakgroeptypen!
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx,
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, 'Beide' type, vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldvvgcx
GROUP BY week, 'Beide', vakgroep) nl
LEFT JOIN ( SELECT week, 'Beide' type, vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldvvgcx
GROUP BY week, 'Beide', vakgroep, cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, 'Beide' type, vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldvvgcx
GROUP BY week, 'Beide', vakgroep, cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN ( SELECT alg_locatie_key, week, 'Beide' type, vakgroep, cl, vt, cx, SUM (totaal) totaal, SUM (acoptijd) acoptijd, SUM (uvoptijd) uvoptijd
FROM mldvvgcx
GROUP BY alg_locatie_key, week, 'Beide', vakgroep, cl, vt, cx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt
UNION ALL -- ALLE vakgroepen over BEIDE vakgroeptypen!
SELECT cx.alg_locatie_key, nl.week, nl.type, nl.vakgroep, cl.cl, vt.vt, cx.cx,
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, 'Beide' type, 'Totaal' vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldvvgcx
GROUP BY week, 'Beide', 'Totaal') nl
LEFT JOIN ( SELECT week, 'Beide' type, 'Totaal' vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldvvgcx
GROUP BY week, 'Beide', 'Totaal', cl) cl
ON nl.week = cl.week AND nl.type = cl.type AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, 'Beide' type, 'Totaal' vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldvvgcx
GROUP BY week, 'Beide', 'Totaal', cl, vt) vt
ON cl.week = vt.week AND cl.type = vt.type AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN ( SELECT alg_locatie_key, week, 'Beide' type, 'Totaal' vakgroep, cl, vt, cx, SUM (totaal) totaal, SUM (acoptijd) acoptijd, SUM (uvoptijd) uvoptijd
FROM mldvvgcx
GROUP BY alg_locatie_key, week, 'Beide', 'Totaal', cl, vt, cx) cx
ON vt.week = cx.week AND vt.type = cx.type AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt;
CREATE OR REPLACE VIEW djin_v_export_kpi_mld_vvg
(
result,
result_order
)
AS
SELECT '"week"'
|| ';"type"'
|| ';"vakgroep"'
|| ';"cluster"'
|| ';"vestiging"'
|| ';"complex"'
|| ';"n_tot_mld_vvg_cx"'
|| ';"n_ac_mld_vvg_cx"'
|| ';"n_uv_mld_vvg_cx"'
|| ';"ac_mld_vvg_nl"'
|| ';"ac_mld_vvg_cl"'
|| ';"ac_mld_vvg_vt"'
|| ';"ac_mld_vvg_cx"'
|| ';"uv_mld_vvg_nl"'
|| ';"uv_mld_vvg_cl"'
|| ';"uv_mld_vvg_vt"'
|| ';"uv_mld_vvg_cx"',
0
FROM DUAL
UNION ALL
SELECT '"'
|| fclt_f_week
|| '";"'
|| fclt_f_type
|| '";"'
|| fclt_f_vakgroep
|| '";"'
|| fclt_f_cluster
|| '";"'
|| fclt_f_vestiging
|| '";"'
|| fclt_f_complex
|| '";"'
|| n_tot_mld_vvg_cx
|| '";"'
|| n_ac_mld_vvg_cx
|| '";"'
|| n_uv_mld_vvg_cx
|| '";"'
|| ac_mld_vvg_nl
|| '";"'
|| ac_mld_vvg_cl
|| '";"'
|| ac_mld_vvg_vt
|| '";"'
|| ac_mld_vvg_cx
|| '";"'
|| uv_mld_vvg_nl
|| '";"'
|| uv_mld_vvg_cl
|| '";"'
|| uv_mld_vvg_vt
|| '";"'
|| uv_mld_vvg_cx
|| '"',
1
FROM djin_v_rap_kpi_mld_vvg;
CREATE OR REPLACE VIEW djin_v_rap_kpi_klr
(
fclt_3d_locatie_key,
--fclt_f_maand,
fclt_f_week,
fclt_f_melding,
fclt_f_cluster,
fclt_f_vestiging,
fclt_f_complex,
n_tot_klr_cx,
n_ac_klr_cx,
n_uv_klr_cx,
ac_klr_nl,
ac_klr_cl,
ac_klr_vt,
ac_klr_cx,
uv_klr_nl,
uv_klr_cl,
uv_klr_vt,
uv_klr_cx
)
AS
WITH mldklrcx -- Per melding/complex onder vakgroeptype=2 de KLR-meldingen (klantreacties) op MLDAFM-tijd!
AS ( SELECT l.alg_locatie_key,
--TO_CHAR (t.fac_tracking_datum, 'yyyy-mm') maand,
TO_CHAR (t.fac_tracking_datum, 'yyyy-iw') week,
sm.mld_stdmelding_omschrijving melding,
COALESCE (ud.fac_usrdata_omschr, 'Onbekend') cl,
d.alg_district_omschrijving vt,
l.alg_locatie_omschrijving cx,
COUNT ( * ) totaal,
SUM (DECODE (
SIGN(m.mld_melding_acceptdatum_std - fac.gettrackingdate ('MLDACP', m.mld_melding_key)),
-1, 0,
1))
acoptijd,
SUM (DECODE (
SIGN(m.mld_melding_einddatum_std - TRUNC (t.fac_tracking_datum, 'mi')),
-1, 0,
1))
uvoptijd
FROM fac_tracking t,
mld_melding m,
mld_stdmelding sm, -- Ook verwijderde meldingen!
mld_discipline md, -- Ook verwijderde vakgroepen!
alg_locatie l, -- Ook verwijderde locaties!
alg_district d, -- Ook verwijderde districten!
alg_v_aanwezigonrgoedkenmerk ok,
fac_usrdata ud
WHERE t.fac_srtnotificatie_key = 38 -- MLDAFM
--AND t.fac_tracking_datum > ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -25)
AND t.fac_tracking_datum > TRUNC (SYSDATE, 'iw') - 770 -- Afgelopen 110 weken
AND t.fac_tracking_refkey = m.mld_melding_key
--AND m.mld_melding_status IN (5, 6) -- Afgemeld/Verwerkt
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = 2 -- Klantreactie
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ok.alg_onrgoed_key(+)
AND ok.alg_onrgoed_niveau(+) = 'L'
AND ok.alg_kenmerk_key(+) = 1000 -- Cluster
AND ok.alg_onrgoedkenmerk_waarde = TO_CHAR (ud.fac_usrdata_key(+))
GROUP BY l.alg_locatie_key,
TO_CHAR (t.fac_tracking_datum, 'yyyy-iw'),
sm.mld_stdmelding_omschrijving,
COALESCE (ud.fac_usrdata_omschr, 'Onbekend'),
d.alg_district_omschrijving,
l.alg_locatie_omschrijving)
SELECT cx.alg_locatie_key, nl.week, nl.melding, cl.cl, vt.vt, cx.cx, -- Per KLR-vakgroep!
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, melding, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldklrcx
GROUP BY week, melding) nl
LEFT JOIN ( SELECT week, melding, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldklrcx
GROUP BY week, melding, cl) cl
ON nl.week = cl.week AND nl.melding = cl.melding
LEFT JOIN ( SELECT week, melding, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldklrcx
GROUP BY week, melding, cl, vt) vt
ON cl.week = vt.week AND cl.melding = vt.melding AND cl.cl = vt.cl
LEFT JOIN (SELECT alg_locatie_key, week, melding, cl, vt, cx, totaal, acoptijd, uvoptijd
FROM mldklrcx) cx
ON vt.week = cx.week AND vt.melding = cx.melding AND vt.cl = cx.cl AND vt.vt = cx.vt
UNION ALL -- ALLE KLR-vakgroepen!
SELECT cx.alg_locatie_key, nl.week, nl.vakgroep, cl.cl, vt.vt, cx.cx,
TO_CHAR (cx.totaal), TO_CHAR (cx.acoptijd), TO_CHAR (cx.uvoptijd),
TO_CHAR (100 * nl.ac_nl, '990') || '%',
TO_CHAR (100 * cl.ac_cl, '990') || '%',
TO_CHAR (100 * vt.ac_vt, '990') || '%',
TO_CHAR (100 * (cx.acoptijd / cx.totaal), '990') || '%',
TO_CHAR (100 * nl.uv_nl, '990') || '%',
TO_CHAR (100 * cl.uv_cl, '990') || '%',
TO_CHAR (100 * vt.uv_vt, '990') || '%',
TO_CHAR (100 * (cx.uvoptijd / cx.totaal), '990') || '%'
FROM ( SELECT week, 'Totaal' vakgroep, SUM (acoptijd) / SUM (totaal) ac_nl, SUM (uvoptijd) / SUM (totaal) uv_nl
FROM mldklrcx
GROUP BY week, 'Totaal') nl
LEFT JOIN ( SELECT week, 'Totaal' vakgroep, cl, SUM (acoptijd) / SUM (totaal) ac_cl, SUM (uvoptijd) / SUM (totaal) uv_cl
FROM mldklrcx
GROUP BY week, 'Totaal', cl) cl
ON nl.week = cl.week AND nl.vakgroep = cl.vakgroep
LEFT JOIN ( SELECT week, 'Totaal' vakgroep, cl, vt, SUM (acoptijd) / SUM (totaal) ac_vt, SUM (uvoptijd) / SUM (totaal) uv_vt
FROM mldklrcx
GROUP BY week, 'Totaal', cl, vt) vt
ON cl.week = vt.week AND cl.vakgroep = vt.vakgroep AND cl.cl = vt.cl
LEFT JOIN ( SELECT alg_locatie_key, week, 'Totaal' vakgroep, cl, vt, cx, SUM (totaal) totaal, SUM (acoptijd) acoptijd, SUM (uvoptijd) uvoptijd
FROM mldklrcx
GROUP BY alg_locatie_key, week, 'Totaal', cl, vt, cx) cx
ON vt.week = cx.week AND vt.vakgroep = cx.vakgroep AND vt.cl = cx.cl AND vt.vt = cx.vt;
CREATE OR REPLACE VIEW djin_v_export_kpi_klr
(
result,
result_order
)
AS
SELECT '"week"'
|| ';"melding"'
|| ';"cluster"'
|| ';"vestiging"'
|| ';"complex"'
|| ';"n_tot_klr_cx"'
|| ';"n_ac_klr_cx"'
|| ';"n_uv_klr_cx"'
|| ';"ac_klr_nl"'
|| ';"ac_klr_cl"'
|| ';"ac_klr_vt"'
|| ';"ac_klr_cx"'
|| ';"uv_klr_nl"'
|| ';"uv_klr_cl"'
|| ';"uv_klr_vt"'
|| ';"uv_klr_cx"',
0
FROM DUAL
UNION ALL
SELECT '"'
|| fclt_f_week
|| '";"'
|| fclt_f_melding
|| '";"'
|| fclt_f_cluster
|| '";"'
|| fclt_f_vestiging
|| '";"'
|| fclt_f_complex
|| '";"'
|| n_tot_klr_cx
|| '";"'
|| n_ac_klr_cx
|| '";"'
|| n_uv_klr_cx
|| '";"'
|| ac_klr_nl
|| '";"'
|| ac_klr_cl
|| '";"'
|| ac_klr_vt
|| '";"'
|| ac_klr_cx
|| '";"'
|| uv_klr_nl
|| '";"'
|| uv_klr_cl
|| '";"'
|| uv_klr_vt
|| '";"'
|| uv_klr_cx
|| '"',
1
FROM djin_v_rap_kpi_klr;
/* Formatted on 2-9-2016 10:50:10 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW djin_v_rap_kpi_res
(
fclt_3d_locatie_key,
fclt_f_week,
fclt_f_catalogus,
fclt_f_cluster,
fclt_f_vestiging,
fclt_f_complex,
res_ant_nl,
res_ant_cl,
res_ant_vt,
res_ant_cx,
res_bzg_nl,
res_bzg_cl,
res_bzg_vt,
res_bzg_cx
)
AS
WITH rescatcx -- Per catalogus/complex de reserveringen van ruimten <20>n voorzieningen op tot-tijd!
AS ( SELECT l.alg_locatie_key,
resbes.wk,
COALESCE (rd.ins_discipline_omschrijving, 'Ruimtes') catalogus,
COALESCE (ud.fac_usrdata_omschr, 'Onbekend') cl,
d.alg_district_omschrijving vt,
l.alg_locatie_omschrijving cx,
SUM (resbez.aant) aantal_reserveringen,
SUM (ROUND (resbes.uren, 2)) bes_uren,
SUM (ROUND (resbez.uren, 2)) bez_uren
FROM (SELECT DISTINCT TO_CHAR (p.wk, 'yyyy-iw') wk, -- DISTINCT igv. verwijderde res_alg_ruimte!
-1 res_discipline_key, -- Ruimte-catalogi niet per catalogus onderverdelen!
rr.res_ruimte_key resource_key,
rar.alg_ruimte_key,
fac.count_work_days (p.wk - 1, p.wk + 5)
* (LEAST (COALESCE (rr.res_ruimte_eindtijd, 17), 17)
- GREATEST (COALESCE (rr.res_ruimte_begintijd, 8), 8))
uren
FROM res_ruimte rr, res_alg_ruimte rar,
(SELECT TRUNC (SYSDATE, 'iw') - (LEVEL * 7) wk FROM DUAL CONNECT BY LEVEL <= 110) p
WHERE rr.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_aanmaak < p.wk + 7
AND (rar.res_alg_ruimte_verwijder IS NULL OR rar.res_alg_ruimte_verwijder >= p.wk)
UNION ALL
SELECT TO_CHAR (p.wk, 'yyyy-iw') wk, -- DISTINCT per definitie!
rd.res_discipline_key,
rd.res_deel_key resource_key,
COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) alg_ruimte_key,
fac.count_work_days (p.wk - 1, p.wk + 5) * 9 -- = 17-8
uren
FROM res_deel rd, ins_deel d,
(SELECT TRUNC (SYSDATE, 'iw') - (LEVEL * 7) wk FROM DUAL CONNECT BY LEVEL <= 110) p
WHERE rd.res_ins_deel_key = d.ins_deel_key
AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
AND rd.res_deel_aanmaak < p.wk + 7
AND (rd.res_deel_verwijder IS NULL OR rd.res_deel_verwijder >= p.wk)) resbes,
( SELECT TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-iw') wk,
-1 res_discipline_key, -- Ruimte-catalogi niet per catalogus onderverdelen!
rr.res_ruimte_key resource_key,
ra.alg_ruimte_key,
COUNT ( * ) aant,
SUM (LEAST ((rrr.res_rsv_ruimte_tot - TRUNC (rrr.res_rsv_ruimte_tot)) * 24, 17)
- GREATEST ((rrr.res_rsv_ruimte_van - TRUNC (rrr.res_rsv_ruimte_van)) * 24, 8))
uren
FROM res_rsv_ruimte rrr, res_ruimte_opstelling ro, res_ruimte rr, res_alg_ruimte ra
WHERE rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_rsv_ruimte_dirtlevel = 0
AND rrr.res_status_fo_key IN (1, 2) -- Optie/Definitief
AND rrr.res_rsv_ruimte_tot BETWEEN TRUNC (SYSDATE, 'iw') - 770 AND TRUNC (SYSDATE, 'iw')
AND TO_CHAR (rrr.res_rsv_ruimte_tot, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrr.res_rsv_ruimte_tot))
--AND TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24') < '17'
--AND TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24') > '08'
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_ruimte_key = ra.res_ruimte_key
GROUP BY TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-iw'),
-1,
rr.res_ruimte_key,
ra.alg_ruimte_key
UNION ALL -- Eendaagse voorzieningen!
SELECT TO_CHAR (rrd.res_rsv_deel_tot, 'yyyy-iw') wk,
rd.res_discipline_key,
rd.res_deel_key resource_key,
COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) alg_ruimte_key,
COUNT ( * ) aant,
SUM (LEAST ((rrd.res_rsv_deel_tot - TRUNC (rrd.res_rsv_deel_tot)) * 24, 17)
- GREATEST ((rrd.res_rsv_deel_van - TRUNC (rrd.res_rsv_deel_van)) * 24, 8))
uren
FROM res_rsv_deel rrd, res_rsv_ruimte rrr, res_deel rd, ins_deel d
WHERE rrd.res_rsv_deel_verwijder IS NULL
AND rrd.res_rsv_deel_dirtlevel = 0
AND TRUNC (rrd.res_rsv_deel_van) = TRUNC (rrd.res_rsv_deel_tot) -- Eendaags!
AND rrd.res_rsv_deel_tot BETWEEN TRUNC (SYSDATE, 'iw') - 770 AND TRUNC (SYSDATE, 'iw')
AND TO_CHAR (rrd.res_rsv_deel_tot, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (rrd.res_rsv_deel_tot))
--AND TO_CHAR (rrd.res_rsv_deel_van, 'hh24') < '17'
--AND TO_CHAR (rrd.res_rsv_deel_tot, 'hh24') > '08'
--AND rrd.bez_bezoekers_key IS NULL -- Geen parkeerplaatsen!
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
AND rrr.res_status_fo_key(+) IN (1, 2) -- Optie/Definitief
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = d.ins_deel_key
AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
GROUP BY TO_CHAR (rrd.res_rsv_deel_tot, 'yyyy-iw'),
rd.res_discipline_key,
rd.res_deel_key,
COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key)
UNION ALL -- Meerdaagse voorzieningen!
SELECT TO_CHAR (p.dag, 'yyyy-iw') wk,
rd.res_discipline_key,
rd.res_deel_key resource_key,
COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) alg_ruimte_key,
COUNT ( * ) aant,
SUM (DECODE (p.dag,
TRUNC (rrd.res_rsv_deel_van), 17 - GREATEST ((rrd.res_rsv_deel_van - TRUNC (rrd.res_rsv_deel_van)) * 24, 8),
TRUNC (rrd.res_rsv_deel_tot), LEAST ((rrd.res_rsv_deel_tot - TRUNC (rrd.res_rsv_deel_tot)) * 24, 17) - 8,
9)) -- = 17-8
uren
FROM res_rsv_deel rrd, res_rsv_ruimte rrr, res_deel rd, ins_deel d,
(SELECT TRUNC (SYSDATE, 'iw') - LEVEL dag FROM DUAL CONNECT BY LEVEL <= 770) p
WHERE rrd.res_rsv_deel_verwijder IS NULL
AND rrd.res_rsv_deel_dirtlevel = 0
AND TRUNC (rrd.res_rsv_deel_van) != TRUNC (rrd.res_rsv_deel_tot) -- Meerdaags!
AND rrd.res_rsv_deel_tot BETWEEN TRUNC (SYSDATE, 'iw') - 770 AND TRUNC (SYSDATE, 'iw')
--AND TO_CHAR (rrd.res_rsv_deel_van, 'hh24') < '17'
--AND TO_CHAR (rrd.res_rsv_deel_tot, 'hh24') > '08'
--AND rrd.bez_bezoekers_key IS NULL -- Geen parkeerplaatsen!
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key(+)
AND rrr.res_status_fo_key(+) IN (1, 2) -- Optie/Definitief
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = d.ins_deel_key
AND COALESCE (d.ins_alg_ruimte_type_org, d.ins_alg_ruimte_type) = 'R' -- Noodzakelijk?
AND p.dag BETWEEN TRUNC (rrd.res_rsv_deel_van) AND TRUNC (rrd.res_rsv_deel_tot)
AND TO_CHAR (p.dag, 'd') BETWEEN '2' AND '6'
AND NOT EXISTS (SELECT 1 FROM mld_vrije_dagen WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (p.dag))
GROUP BY TO_CHAR (p.dag, 'yyyy-iw'),
rd.res_discipline_key,
rd.res_deel_key,
COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key)) resbez,
res_discipline rd, -- Ook verwijderde catalogi!
alg_v_onrgoed_boom aob, -- Ook verwijderde ruimten!
alg_locatie l, -- Ook verwijderde locaties!
alg_district d, -- Ook verwijderde districten!
alg_v_aanwezigonrgoedkenmerk ok,
fac_usrdata ud
WHERE resbes.wk = resbez.wk(+)
AND resbes.res_discipline_key = resbez.res_discipline_key(+)
AND resbes.resource_key = resbez.resource_key(+)
AND resbes.alg_ruimte_key = resbez.alg_ruimte_key(+)
AND resbes.res_discipline_key = rd.ins_discipline_key(+)
AND resbes.alg_ruimte_key = aob.alg_ruimte_key
AND aob.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ok.alg_onrgoed_key(+)
AND ok.alg_onrgoed_niveau(+) = 'L'
AND ok.alg_kenmerk_key(+) = 1000 -- Cluster
AND ok.alg_onrgoedkenmerk_waarde = TO_CHAR (ud.fac_usrdata_key(+))
AND resbes.uren > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van reserveerbare ruimte = res_ruimte)!
AND COALESCE (resbez.uren, 1) > 0 -- Soms 0 of zelfs negatief bij vreemde/gelijke begin- en eindtijden (van res_rsv_ruimte/deel)!
GROUP BY l.alg_locatie_key,
resbes.wk,
COALESCE (rd.ins_discipline_omschrijving, 'Ruimtes'),
COALESCE (ud.fac_usrdata_omschr, 'Onbekend'),
d.alg_district_omschrijving,
l.alg_locatie_omschrijving)
SELECT cx.alg_locatie_key, nl.wk, nl.catalogus, cl.cl, vt.vt, cx.cx,
TO_CHAR (nl.ant_nl, '999990'),
TO_CHAR (cl.ant_cl, '999990'),
TO_CHAR (vt.ant_vt, '999990'),
TO_CHAR (cx.ant_cx, '999990'),
TO_CHAR (100 * nl.bzg_nl, '990') || '%',
TO_CHAR (100 * cl.bzg_cl, '990') || '%',
TO_CHAR (100 * vt.bzg_vt, '990') || '%',
TO_CHAR (100 * cx.bzg_cx, '990') || '%'
FROM ( SELECT wk, catalogus, SUM (aantal_reserveringen) ant_nl, SUM (COALESCE (bez_uren, 0)) / SUM (bes_uren) bzg_nl
FROM rescatcx
GROUP BY wk, catalogus) nl
LEFT JOIN ( SELECT wk, catalogus, cl, SUM (aantal_reserveringen) ant_cl, SUM (COALESCE (bez_uren, 0)) / SUM (bes_uren) bzg_cl
FROM rescatcx
GROUP BY wk, catalogus, cl) cl
ON nl.wk = cl.wk AND nl.catalogus = cl.catalogus
LEFT JOIN ( SELECT wk, catalogus, cl, vt, SUM (aantal_reserveringen) ant_vt, SUM (COALESCE (bez_uren, 0)) / SUM (bes_uren) bzg_vt
FROM rescatcx
GROUP BY wk, catalogus, cl, vt) vt
ON cl.wk = vt.wk AND cl.catalogus = vt.catalogus AND cl.cl = vt.cl
LEFT JOIN (SELECT alg_locatie_key, wk, catalogus, cl, vt, cx, aantal_reserveringen ant_cx, COALESCE (bez_uren, 0) / bes_uren bzg_cx
FROM rescatcx) cx
ON vt.wk = cx.wk AND vt.catalogus = cx.catalogus AND vt.cl = cx.cl AND vt.vt = cx.vt;
/* Formatted on 5-9-2016 16:32:28 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW djin_v_export_kpi_res
(
result,
result_order
)
AS
SELECT '"week"'
|| ';"catalogus"'
|| ';"cluster"'
|| ';"vestiging"'
|| ';"complex"'
|| ';"res_ant_nl"'
|| ';"res_ant_cl"'
|| ';"res_ant_vt"'
|| ';"res_ant_cx"'
|| ';"res_bzg_nl"'
|| ';"res_bzg_cl"'
|| ';"res_bzg_vt"'
|| ';"res_bzg_cx"',
0
FROM DUAL
UNION ALL
SELECT '"'
|| fclt_f_week
|| '";"'
|| fclt_f_catalogus
|| '";"'
|| fclt_f_cluster
|| '";"'
|| fclt_f_vestiging
|| '";"'
|| fclt_f_complex
|| '";"'
|| res_ant_nl
|| '";"'
|| res_ant_cl
|| '";"'
|| res_ant_vt
|| '";"'
|| res_ant_cx
|| '";"'
|| res_bzg_nl
|| '";"'
|| res_bzg_cl
|| '";"'
|| res_bzg_vt
|| '";"'
|| res_bzg_cx
|| '"',
1
FROM djin_v_rap_kpi_res;
CREATE OR REPLACE VIEW djin_v_rap_kpi_tot
(
fclt_3d_locatie_key,
fclt_f_week,
fclt_f_type,
fclt_f_vakgroep,
fclt_f_cluster,
fclt_f_vestiging,
fclt_f_complex,
tot_mld,
ac_mld,
uv_mld,
tot_ord
)
AS
WITH mldtot -- Per vakgroep/complex alle meldingen (incl. onderliggende opdrachten) op MLDAFM-tijd!
AS ( SELECT l.alg_locatie_key,
TO_CHAR (t.fac_tracking_datum, 'yyyy-iw') week,
sd.ins_srtdiscipline_prefix type,
md.ins_discipline_omschrijving vakgroep,
COALESCE (ud.fac_usrdata_omschr, 'Onbekend') cl,
d.alg_district_omschrijving vt,
l.alg_locatie_omschrijving cx,
COUNT ( * ) tot_mld,
SUM (DECODE (
SIGN(m.mld_melding_acceptdatum_std - fac.gettrackingdate ('MLDACP', m.mld_melding_key)),
-1, 0,
1))
acoptijd,
SUM (DECODE (
SIGN(m.mld_melding_einddatum_std - TRUNC (t.fac_tracking_datum, 'mi')),
-1, 0,
1))
uvoptijd,
COUNT (o.mld_opdr_key) tot_ord
FROM fac_tracking t,
mld_melding m,
mld_opdr o,
mld_stdmelding sm, -- Ook verwijderde meldingen,
mld_discipline md, -- en verwijderde vakgroepen,
ins_srtdiscipline sd, -- en verwijderde vakgroeptypen,
alg_locatie l, -- en verwijderde locaties,
alg_district d, -- en verwijderde districten!
alg_v_aanwezigonrgoedkenmerk ok,
fac_usrdata ud
WHERE t.fac_srtnotificatie_key = 38 -- MLDAFM
AND t.fac_tracking_datum > TRUNC (SYSDATE, 'iw') - 770 -- Afgelopen 110 weken
AND t.fac_tracking_refkey = m.mld_melding_key
AND m.mld_melding_key = o.mld_melding_key
--AND m.mld_melding_status IN (5, 6) -- Afgemeld/Verwerkt
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ok.alg_onrgoed_key(+)
AND ok.alg_onrgoed_niveau(+) = 'L'
AND ok.alg_kenmerk_key(+) = 1000 -- Cluster
AND ok.alg_onrgoedkenmerk_waarde = TO_CHAR (ud.fac_usrdata_key(+))
GROUP BY l.alg_locatie_key,
TO_CHAR (t.fac_tracking_datum, 'yyyy-iw'),
sd.ins_srtdiscipline_prefix,
md.ins_discipline_omschrijving,
COALESCE (ud.fac_usrdata_omschr, 'Onbekend'),
d.alg_district_omschrijving,
l.alg_locatie_omschrijving)
SELECT alg_locatie_key, week, type, vakgroep, cl, vt, cx, -- Per vakgroep per vakgroeptype!
TO_CHAR (tot_mld), TO_CHAR (acoptijd), TO_CHAR (uvoptijd), TO_CHAR (tot_ord)
FROM mldtot
UNION ALL -- ALLE vakgroepen over ALLE vakgroeptypen!
SELECT alg_locatie_key, week, 'Alle' type, 'Totaal' vakgroep, cl, vt, cx,
TO_CHAR (SUM (tot_mld)), TO_CHAR (SUM (acoptijd)), TO_CHAR (SUM (uvoptijd)), TO_CHAR (SUM (tot_ord))
FROM mldtot
GROUP BY alg_locatie_key, week, 'Alle', 'Totaal', cl, vt, cx;
CREATE OR REPLACE VIEW djin_v_export_kpi_tot
(
result,
result_order
)
AS
SELECT '"week"'
|| ';"type"'
|| ';"vakgroep"'
|| ';"cluster"'
|| ';"vestiging"'
|| ';"complex"'
|| ';"mld"'
|| ';"ac"'
|| ';"uv"'
|| ';"ord"',
0
FROM DUAL
UNION ALL
SELECT '"'
|| fclt_f_week
|| '";"'
|| fclt_f_type
|| '";"'
|| fclt_f_vakgroep
|| '";"'
|| fclt_f_cluster
|| '";"'
|| fclt_f_vestiging
|| '";"'
|| fclt_f_complex
|| '";"'
|| tot_mld
|| '";"'
|| ac_mld
|| '";"'
|| uv_mld
|| '";"'
|| tot_ord
|| '"',
1
FROM djin_v_rap_kpi_tot;
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
BEGIN fac.registercustversion('DJIN', 7); END;
/
commit;
spool off