08. august 2013 - 13:19Der er
9 kommentarer og 1 løsning
View til bestemmelse af min og max interval
Hej Eksperter,
Jeg vil gerne oprette et view som kan fortælle mig hvilket dato interval en anden tabel er filtreret på i en forspørgsel.
Ideen er at jeg har en tidstabel kaldet DIM_TIMER Den indeholder alle timer i fra 2005 og frem til nu. Den har desuden nogle kolonner som brugerne kan bruge til at filtre et interval på.
Jeg har prøvet mig frem med forskellig varianter. Men enten får jeg samtlige værdier DIM_TIMER ellers for jeg min og max til at være det samme som TIME.
Max date bliver forkert da der så aggregeres på dato niveau og ikke timer niveau. Desuden ved jeg ikke hvilket niveau der bliver forespurgt på så jeg kan ikke hardcode partition.
hvis jeg efterlader over blank. virker statementet.
Men hvis jeg putter det i et view og sætter where statementet uden på viewet går det galt.
e.g. --select * from ( select t.N_TID,N_DATO,MIN(t.N_TID) over () as MinTid,MAX(t.N_TID) over () as MaxTid from DM.DIM_EL_TID t --)a where N_DATO = '2013-07-01'
statement virker, men hvis man fjerne kommentarene bliver min og max forkerte.
Synes godt om
Slettet bruger
12. august 2013 - 13:00#10
View dur ikke hvis du ikke ved hvad du skal "partition by" - hvad med at bruge ét statement (i stedet for join på view) v.h.a. WITH AS:
WITH Tider AS (select * from DM.DIM_EL_TID t where N_DATO = '2013-07-01' --eller hvad bruger vælger som afgr. ) select t.N_TID,t.N_DATO ,MIN(t.N_TID) over () as MinTid ,MAX(t.N_TID) over () as MaxTid from Tider t
Synes godt om
Ny brugerNybegynder
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.