Avatar billede friis5 Novice
30. september 2008 - 13:56 Der er 3 kommentarer og
1 løsning

Hjælp med tabel

Jeg skal lave et view, der giver mig flg. resultat;

Var1, RefPeriode, DK, Udland
DK001, 01-08-2008, 700, 17
DK002, 01-08-2008, 800, 16
DK003, 01-08-2008, 900, 15
DK001, 01-07-2008, 699, 27
DK002, 01-07-2008, 799, 26
....

Pt ser tabellen således ud;

Var1, RefPeriode1, Type, Vaerdi
DK001, 01-08-2008, 1, 700
DK001, 01-08-2008, 2, 17
DK002, 01-08-2008, 1, 800
DK002, 01-08-2008, 2, 16
DK003, 01-08-2008, 1, 900
DK003, 01-08-2008, 2, 15
DK001, 01-07-2008, 1, 699
DK001, 01-07-2008, 2, 27
....

Her kan "Type" antage værdien 1 og 2, hvor 1 er DK og 2 er Udland. Altså skal to ens datoer slåes sammen på samme "Var1", og "type", "Vaerdi" skal laves til to andre variable "DK" og "Udland".

Håber det gav lidt mening :)
Avatar billede teepee Nybegynder
30. september 2008 - 14:29 #1
select var1, refperiode1, (select vaerdi from tabel1 y where x.var1=y.var1 and x.refperiode1 = y.refperiode1 and type = 1) DK, (select vaerdi from tabel1 y where x.var1=y.var1 and x.refperiode1 = y.refperiode1 and type = 2) UDL
from tabel 1 x

med forbehold for stavefejl...
Avatar billede friis5 Novice
03. oktober 2008 - 11:33 #2
Hov ja, takker det virkede jo som smurt (dog kom der en del dupletter, men det ordnede en "group by var1, refperiode")
Avatar billede friis5 Novice
03. oktober 2008 - 13:03 #3
Nu har jeg godt nok afgivet dig point for din fine indsats, men jeg tænkte på om du lige kunne hjælpe mig med en sidste ting. Koden ser således ud nu;

SELECT  var1, refperiode,
        (SELECT vaerdi
            FROM tabel y
          WHERE x.var1 = y.var1
            AND x.refperiode = y.refperiode
            AND type_sek = '1.0.0') dk,
        (SELECT vaerdi
            FROM tabel y
          WHERE x.var1 = y.var1
            AND x.refperiode = y.refperiode
            AND type_sek = '2.0.0') udl
    FROM tabel x
  WHERE refperiode > TO_DATE ('01/07/2008', 'dd/mm/yyyy')
    AND var1 BETWEEN 'DK002' AND 'DK005'
GROUP BY var1, refperiode

Det jeg tænkte på, var om det var muligt at gruppere hele resultatet til en "linie" a la:

Var1, RefPeriode, DK, Udland
DK002-DK005, 01-08-2008, sum(dk), sum(udland)

Med sum(dk)=30 og sum(udland)=14 mener jeg slf. at ved grupperingen skal det være totalen (se nedenfor).

Det hele i stedet for resultatet:

Var1, RefPeriode, DK, Udland
DK002, 01-08-2008, 3, 1
DK003, 01-08-2008, 5, 4
DK004, 01-08-2008, 19, 6
DK005, 01-08-2008, 3, 3
Avatar billede teepee Nybegynder
03. oktober 2008 - 15:38 #4
hvis vi definerer den ovenstående sql som view1 så kan du:
select refperiode, sum(dk), sum(udl) from view1 group by refperiode
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