Gå til innhold

Oracle: hjelp med SQL-statement


Anbefalte innlegg

Jeg har tre tabeller/tables jeg vil lage en rapport fra. For enkelthets skyld har jeg opprettet tre forenklede utgaver:

 

Kunde:
KUN_ID(PK) FORNAVN ETTERNAVN

101 Renate Johansen
102 Espen Johnson
103 Siv Jensen
104 Trond Johansen

 

Avstemning:

AVS_NR(PK) KUN_ID(FK) RESULTAT AVS_DATO

1001 102 'Ja' 03/04/2014

1002 101 'Ja' 05/04/2014

1003 102 'Nei' 14/04/2014

1004 103 'Nei' 16/04/2014

1005 104 'Ja' 16/04/2014

1006 104 'Ja' 18/04/2014

 

Regning

REG_NR(PK) KUN_ID(FK) SUM REG_DATO STATUS

10001 101 200 05/03/2014 'Betalt'

10002 102 200 05/03/2014 'Betalt'

10003 103 300 07/03/2014 'Ikke betalt'

10004 104 100 07/03/2014 'Ikke betalt'

10003 102 200 14/03/2014 'Betalt'

10004 104 100 16/03/2014 'Ikke betalt'

 

Jeg ønsker å hente ut informasjon om de ansatte (ID-nummer og fullt navn), deres siste resultat på avstemningen, samt summen av deres ubetalte regninger. Jeg bruker Oracle.

 

Avstemningen gjelder én bestemt sak. F.eks: kunde med ID-nr. 102 stemte først 'Ja', men endret senere svaret til 'Nei'. Jeg ønsker kun å få med det siste resultatet. Dette er jeg usikker på hvordan jeg skal få til. Jeg har lest at ROW_NUMBER med PARTITION BY kan være hensiksmessig, men jeg vet ikke helt hvordan jeg bruker dette.

 

Noen som kan hjelpe meg med hvordan SELECT-statementet skal se ut?

Endret av ggree
Lenke til kommentar
Videoannonse
Annonse

Jeg ville bare brukt sub-selects altså noe a'la

 

select k.kun_id,k.fornavn,k.etternavn,

(select a.resultat from avstemning a where a.kun_id = k.kun_id and a.reg_dato =

(select max(a2.reg_dato) from avstemning a2 where a2.kun_id = a.kun_id)) as resultat,

(select sum(r.sum) from regning r where r.kun_id = k.kun_id and r.status = 'Ikke betalt') as ubetaltsum from kunde k where k.kun_id = 123;

 

Dette kan sikksert skrives vakrere med joins og group-by mv., men from the top of my head ...

 

edit: hadde glemt "from" ... hehe ...

Endret av quantum
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...