SQL
CREATE OR REPLACE VIEW webviewer.mc_vandtype_v AS
SELECT
rownum id,
sub.*,
CASE
WHEN sub.vandtype = 'A' THEN '255 0 0' -- rød
WHEN sub.vandtype = 'B' THEN '255 255 0' -- gul
WHEN sub.vandtype = 'C' THEN '0 255 0' -- grøn
WHEN sub.vandtype = 'D' THEN '0 0 255' -- blå
WHEN sub.vandtype = 'AB' THEN '255 125 0' -- orange
WHEN sub.vandtype = 'ABx' THEN '255 212 0' -- lys orange
WHEN sub.vandtype = 'Ax' THEN '255 125 125' -- lys rød
WHEN sub.vandtype = 'Bx' THEN '255 255 125' -- lys gul
WHEN sub.vandtype = 'Cx' THEN '125 255 125' -- lys grøn
WHEN sub.vandtype = 'Dx' THEN '125 125 255' -- lys blå
WHEN sub.vandtype = 'CDx' THEN '0 255 255' -- cyan
END rgb,
ROW_NUMBER() OVER (PARTITION BY sub.borid, sub.indtagsid ORDER BY DECODE(sub.vandtype,'X',4,'DX',3,'AB',2,1), sub.dato DESC ) prio
FROM
(
SELECT
DISTINCT
b.borid,
i.indtagsid,
i.indtagsnr AS indtag_nr,
CASE WHEN COUNT( DISTINCT anl.anlaegid ) OVER ( PARTITION BY b.borid,i.indtagsid ) > 1 THEN 'Knyttet til flere anlæg' ELSE anl.anlaegsnavn END AS anlaegs_navn,
CASE WHEN COUNT( DISTINCT anl.anlaegid ) OVER ( PARTITION BY b.borid,i.indtagsid ) = 1 THEN anl.anlaegid END AS anlaeg_id,
CASE WHEN COUNT( DISTINCT anl.anlaegid ) OVER ( PARTITION BY b.borid,i.indtagsid ) = 1 THEN anl2.anlaegsnavn END AS overanlaegs_navn,
CASE WHEN COUNT( DISTINCT anl.anlaegid ) OVER ( PARTITION BY b.borid,i.indtagsid ) = 1 THEN anl.virksomhedstype END AS virksomhedstype_kode,
CASE WHEN COUNT( DISTINCT anl.anlaegid ) OVER ( PARTITION BY b.borid,i.indtagsid ) = 1 THEN vl.virksomhedstype1992 END AS virksomhedstype_tekst,
CASE WHEN COUNT( DISTINCT anl.anlaegid ) OVER ( PARTITION BY b.borid,i.indtagsid ) = 1 THEN anl.kommunenr2007 END AS kommune_nr,
CASE WHEN COUNT( DISTINCT anl.anlaegid ) OVER ( PARTITION BY b.borid,i.indtagsid ) = 1 THEN k.kommunenavn END AS kommune_navn,
CASE WHEN COUNT( DISTINCT anl.anlaegid ) OVER ( PARTITION BY b.borid,i.indtagsid ) = 1 THEN ial.lang_tekst END AS indtag_anvendelse_tekst,
CASE
WHEN bf.dybdetopindtag IS NULL AND bf.dybdebundindtag IS NULL AND prv.top IS NULL AND prv.bund IS NULL THEN boringsdybde-2
WHEN bf.dybdetopindtag IS NULL AND bf.dybdebundindtag IS NULL AND prv.top IS NULL THEN prv.bund-2
WHEN bf.dybdetopindtag IS NULL AND bf.dybdebundindtag IS NULL THEN prv.top
WHEN bf.dybdetopindtag IS NULL THEN bf.dybdebundindtag-2
ELSE bf.dybdetopindtag
END indtag_top_dybde,
prv.dato,
CASE
WHEN bf.dybdetopindtag IS NULL AND bf.dybdebundindtag IS NULL AND prv.top IS NULL AND prv.bund IS NULL THEN 'Boringdybde minus 2 m anvendt'
WHEN bf.dybdetopindtag IS NULL AND bf.dybdebundindtag IS NULL AND prv.top IS NULL THEN 'Max. prøve-bund minus 2 m anvendt'
WHEN bf.dybdetopindtag IS NULL AND bf.dybdebundindtag IS NULL THEN 'Min. prøve-top anvendt'
WHEN bf.dybdetopindtag IS NULL THEN 'Dybdebund minus 2 m. anvendt'
ELSE 'Dybdetop anvendt'
END indtag_top_dybde_forklaret,
CASE
WHEN bf.dybdebundindtag IS NULL AND bf.dybdetopindtag IS NULL AND prv.bund IS NULL AND prv.top IS NULL THEN boringsdybde
WHEN bf.dybdebundindtag IS NULL AND bf.dybdetopindtag IS NULL AND prv.bund IS NULL THEN prv.top+2
WHEN bf.dybdebundindtag IS NULL AND bf.dybdetopindtag IS NULL THEN prv.bund
WHEN bf.dybdebundindtag IS NULL THEN bf.dybdetopindtag+2
ELSE bf.dybdebundindtag
END indtag_bund_dybde,
CASE
WHEN bf.dybdebundindtag IS NULL AND bf.dybdetopindtag IS NULL AND prv.bund IS NULL AND prv.top IS NULL THEN 'Boringdybde anvendt'
WHEN bf.dybdebundindtag IS NULL AND bf.dybdetopindtag IS NULL AND prv.bund IS NULL THEN 'Min. prøve-top plus 2 m anvendt'
WHEN bf.dybdebundindtag IS NULL AND bf.dybdetopindtag IS NULL THEN 'Max. prøve-bund anvendt'
WHEN bf.dybdebundindtag IS NULL THEN 'Dybdetop plus 2 m. anvendt'
ELSE 'Dybdebund anvendt'
END indtag_bund_dybde_forklaret,
prv.top AS proeve_top,
prv.bund AS proeve_bund,
ana.*,
CASE
WHEN ana.nitrat IS NULL AND ana.ilt <1 AND ana.jern <0.2 AND ana.sulfat>0.1 THEN 'CDX'
WHEN ana.nitrat >1 AND ana.ilt >1 AND ana.jern <0.2 AND ana.sulfat>0.1 THEN 'A'
WHEN ana.nitrat >1 AND ana.ilt <1 AND ana.jern <0.2 AND ana.sulfat>0.1 THEN 'B'
WHEN ana.nitrat >1 AND ana.ilt >1 AND ana.jern IS NULL AND ana.sulfat IS NULL THEN 'A'
WHEN ana.nitrat >1 AND ana.ilt <1 AND ana.jern IS NULL AND ana.sulfat IS NULL THEN 'B'
WHEN ana.nitrat >1 AND ana.ilt >1 AND ana.jern IS NULL AND ana.sulfat>0.1 THEN 'A'
WHEN ana.nitrat >1 AND ana.ilt <1 AND ana.jern IS NULL AND ana.sulfat>0.1 THEN 'B'
WHEN ana.nitrat >1 AND ana.ilt >1 AND ana.jern <0.2 AND ana.sulfat IS NULL THEN 'A'
WHEN ana.nitrat >1 AND ana.ilt <1 AND ana.jern <0.2 AND ana.sulfat IS NULL THEN 'B'
WHEN ana.nitrat >1 AND ana.ilt IS NULL AND ana.jern <0.2 AND ana.sulfat>0.1 THEN 'AB'
WHEN ana.nitrat >1 AND ana.ilt IS NULL AND ana.jern <0.2 AND ana.sulfat IS NULL THEN 'AB'
WHEN ana.nitrat >1 AND ana.ilt IS NULL AND ana.jern >0.2 AND ana.sulfat>0.1 THEN 'ABx'
WHEN ana.nitrat >1 AND ana.ilt IS NULL AND ana.jern >0.2 AND ana.sulfat IS NULL THEN 'ABx'
WHEN ana.nitrat >1 AND ana.ilt >1 AND ana.jern >0.2 AND ana.sulfat>0.1 THEN 'Ax'
WHEN ana.nitrat >1 AND ana.ilt >1 AND ana.jern >0.2 AND ana.sulfat IS NULL THEN 'Ax'
WHEN ana.nitrat >1 AND ana.ilt <1 AND ana.jern >0.2 AND ana.sulfat>0.1 THEN 'Bx'
WHEN ana.nitrat >1 AND ana.ilt <1 AND ana.jern >0.2 AND ana.sulfat IS NULL THEN 'Bx'
WHEN ana.nitrat <1 AND ana.ilt <5 AND ana.jern >0.002 AND ana.sulfat>20 THEN 'C'
WHEN ana.nitrat <1 AND ana.ilt <5 AND ana.jern IS NULL AND ana.sulfat>20 THEN 'C'
WHEN ana.nitrat <1 AND ana.ilt IS NULL AND ana.jern >0.002 AND ana.sulfat>20 THEN 'C'
WHEN ana.nitrat <1 AND ana.ilt IS NULL AND ana.jern IS NULL AND ana.sulfat>20 THEN 'C'
WHEN ana.nitrat <1 AND ana.ilt >5 AND ana.jern >0.002 AND ana.sulfat>20 THEN 'Cx'
WHEN ana.nitrat <1 AND ana.ilt >5 AND ana.jern IS NULL AND ana.sulfat>20 THEN 'Cx'
WHEN ana.nitrat <1 AND ana.ilt <5 AND ana.jern <0.1 AND ana.sulfat>20 THEN 'Cx'
WHEN ana.nitrat <1 AND ana.ilt IS NULL AND ana.jern <0.1 AND ana.sulfat>20 THEN 'Cx'
WHEN ana.nitrat <1 AND ana.ilt <5 AND ana.jern >0.002 AND ana.sulfat<20 THEN 'D'
WHEN ana.nitrat <1 AND ana.ilt <5 AND ana.jern IS NULL AND ana.sulfat<20 THEN 'D'
WHEN ana.nitrat <1 AND ana.ilt IS NULL AND ana.jern >0.002 AND ana.sulfat<20 THEN 'D'
WHEN ana.nitrat <1 AND ana.ilt IS NULL AND ana.jern IS NULL AND ana.sulfat<20 THEN 'D'
WHEN ana.nitrat <1 AND ana.ilt >5 AND ana.jern >0.002 AND ana.sulfat<20 THEN 'Dx'
WHEN ana.nitrat <1 AND ana.ilt >5 AND ana.jern IS NULL AND ana.sulfat<20 THEN 'Dx'
WHEN ana.nitrat <1 AND ana.ilt <5 AND ana.jern <0.1 AND ana.sulfat<20 THEN 'Dx'
WHEN ana.nitrat <1 AND ana.ilt IS NULL AND ana.jern <0.1 AND ana.sulfat<20 THEN 'Dx'
END vandtype,
prv.kationsumberegnet,
prv.anionsumberegnet,
CASE
WHEN prv.anionsumberegnet IS NULL THEN NULL
WHEN prv.anionsumberegnet = 0 THEN -99999
ELSE (prv.kationsumberegnet-prv.anionsumberegnet)/(prv.kationsumberegnet + prv.anionsumberegnet)*100
END ionbalance,
pfl.lang_tekst proeveformaal_tekst,
REPLACE('http://jupiter.geus.dk/cgi-bin/analysisTimeSeries.exe/svg?dgunr='||REPLACE(b.dgunr,' ')||'[+]indtagsid='||TO_CHAR(i.indtagsid)||'[+]stofnr=1551[+]stofnr=2081[+]stofnr=305[+]stofnr=1176[+]stofnr=2041[+]stofnr=2142[+]stofnr=251[+]stofnr=2501[+]stofnr=9939','[+]','&') url_tidsserie
FROM
mis.bor$boring b
INNER JOIN
mis.gvk$proeve prv
ON prv.borid = b.borid
INNER JOIN
(
-- grupperet på prøveID
SELECT
2*( (MAX( CASE WHEN t.stofnr = 1551 THEN t.maengde/40.1 END ) +
MAX( CASE WHEN t.stofnr = 2081 THEN t.maengde/24.3 END )) /
MAX (CASE WHEN t.stofnr = 305 AND t.maengde > 0 THEN t.maengde/61 END) ) forvitringsindeks,
MAX( CASE WHEN t.stofnr = 251 THEN t.maengde END ) ilt,
MAX( CASE WHEN t.stofnr = 1176 THEN t.maengde END ) nitrat,
MAX( CASE WHEN t.stofnr = 2041 THEN t.maengde END ) jern,
MAX( CASE WHEN t.stofnr = 2142 THEN t.maengde END ) sulfat,
MAX( CASE WHEN t.stofnr = 2501 THEN t.maengde END ) methan,
MAX( CASE WHEN t.stofnr = 9939 THEN t.maengde END ) dihydrogensulfid,
MAX( CASE WHEN t.stofnr = 1011 THEN t.maengde END ) ammonium,
t.proeveid
FROM
mis.gvk$analyse t
WHERE
t.stofnr IN (1011,1551,2081,305,1176,2041,2142,251,2501,9939)
AND
(t.kvalitetssikring IS NULL OR t.kvalitetssikring IN (0,1,2,3,7,9,10,11 ))
AND
(t.attribut IS NULL OR t.attribut NOT IN ('<','!','/','A','B','C','D','E','S'))
GROUP BY
t.proeveid
HAVING
MAX( CASE WHEN t.stofnr = 1176 THEN t.maengde END ) > 0 -- nitrat
AND MAX( CASE WHEN t.stofnr = 2041 THEN t.maengde END ) > 0 -- jern
AND MAX( CASE WHEN t.stofnr = 2142 THEN t.maengde END ) > 0 -- sulfat
) ana
ON prv.proeveid = ana.proeveid
LEFT OUTER JOIN
mis.bor$indtag i
ON i.borid = prv.borid
AND i.indtagsid = prv.indtagsid
LEFT OUTER JOIN
mis.drv$indtag_anlaeg indanl
ON indanl.borid = i.borid
AND indanl.indtagsid = i.indtagsid
LEFT OUTER JOIN
mis.drv$anlaeg anl
ON anl.anlaegid = indanl.anlaegid
LEFT OUTER JOIN
mis.drv$virksomhedstype_liste vl
ON vl.kode = anl.virksomhedstype
LEFT OUTER JOIN
mis.drv$anlaeg anl2
ON anl2.anlaegid = anl.overanlaeg
LEFT OUTER JOIN
mis.bor$indtaganvend_liste ial
ON ial.kode = indanl.indtagsanvendelse
LEFT OUTER JOIN
mis.gen$kommune2007 k
ON k.kommunenr = anl.kommunenr2007
LEFT OUTER JOIN
mis.gen$vandproeveformaal_liste pfl
ON pfl.kode = prv.formaal
LEFT OUTER JOIN
(SELECT
borid,
indtagsid,
MIN (top) AS dybdetopindtag, -- der kan være flere filtre på indtaget - benyt øverste som top
MAX (bund) AS dybdebundindtag -- der kan være flere filtre på indtaget - benyt nederste som bund
FROM
mis.bor$filter
GROUP BY
borid, indtagsid
) bf
ON bf.borid = i.borid
AND bf.indtagsid = i.indtagsid
WHERE
(prv.proevestatus_kode IS NULL OR prv.proevestatus_kode IN (2,4,6))
-- debug AND prv.proeveid = 100346
AND
b.xutm32euref89 <> 0
) sub
ORDER BY
sub.borid, sub.indtagsid, DECODE(sub.vandtype,'X',4,'DX',3,'AB',2,1), sub.dato DESC;