Avatar billede f2f4 Novice
21. oktober 2008 - 17:01 Der er 6 kommentarer og
1 løsning

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;
Avatar billede arne_v Ekspert
21. oktober 2008 - 17:17 #1
Lav det som en SP med en parameter hvori aar angives.
Avatar billede f2f4 Novice
21. oktober 2008 - 17:28 #2
Kan du give et lille eksempel, tak ... så er der lidt point i vente ;-)
Avatar billede arne_v Ekspert
21. oktober 2008 - 17:41 #3
Det vil vare lidt tid inden jeg kan lave et eksempel.

Men http://asktom.oracle.com/tkyte/ResultSets/index.html viser select in SP/function.
Avatar billede steber Nybegynder
21. oktober 2008 - 17:53 #4
Hvor kører du SQL'en fra? SQL*Plus, et værktøj, Java?
Avatar billede f2f4 Novice
08. februar 2010 - 14:33 #5
undskyld denne blev glemt, sorry
Avatar billede f2f4 Novice
08. februar 2010 - 14:34 #6
undskyld denne blev glemt, sorry
Avatar billede arne_v Ekspert
08. februar 2010 - 14:48 #7
Sammenlignet med at du selv hapser point, saa er svartiden da en mindre detalje !!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester