Variabel i sql
I ndedenstående sql ingår 2006 mange steder, kan dette ikke stå i en 'variabel' i selve pl-sql'en, så det kun skal rettes et sted!?/*
Denne SQL viser de søfarer hvor der til et givet år er en forskel på mere end 10 dage imellem indberettede DIS dage fra
rederierne, og DIS dage oplyst fra Told & Skat.
Hvis man ønsker en anden forskel end 10, skal tallet 10 blot ændres til den ønskede værdi.
Det år der ønskes, at sammenligne indberettede dage for indtastes for hhv. IndkAar og IndberetningsAar.
Tilrettet af Morten vedr. år 2006 d. 22/8 2007
*/
alter session set nls_date_format = "dd-mm-yyyy";
select
s.cprnr,
s.navn,
RederNr,
JurEnhedNr,
sum(ordinaere_dage+extraordinaere_dage) "INDBERET",
(disdage+disdage_frg) "EA DAGE",
lobenr
from
sofarer s,
indberetningsliste il,
indberetning i,
endeligafrg ea,
rederi,
juridisk_enhed
where
s.sofarer_id = i.sofarer_id
and
i.indberetningsliste_id = il.indberetningsliste_id
and
ea.sofarer_id = s.sofarer_id
and
indberetningsaar = 2006
and
slopaar = 2006
and
rederi.rederi_id = s.rederi_id
and
juridisk_enhed.rederi_id = rederi.rederi_id
and
juridisk_enhed.juridisk_enhed_id = il.juridisk_enhed_id
and
10 < (select ABS( sum(ordinaere_dage + extraordinaere_dage) - ( disdage + disdage_frg ))
from endeligafrg, indberetning i2, indberetningsliste il2
where
endeligafrg.sofarer_id = s.sofarer_id
and
i2.sofarer_id = s.sofarer_id
and
i2.indberetningsliste_id = il2.indberetningsliste_id
and
indberetningsaar = 2006
and
slopaar = 2006
and lobenr = (select max(lobenr)
from endeligafrg
where
sofarer_id = s.sofarer_id
and
slopaar = 2006
and
kontroldato = '30-12-1899')
group by disdage, disdage_frg)
and lobenr = (select max(lobenr)
from endeligafrg
where
sofarer_id = s.sofarer_id
and
slopaar = 2006
and
kontroldato = '30-12-1899')
group by s.cprnr, s.navn,redernr,jurenhednr,lobenr,(disdage+disdage_frg)
order by cprnr;