Avatar billede jakobnygren Nybegynder
27. juni 2005 - 10:58 Der er 17 kommentarer og
1 løsning

Udtræk ang. datoer i access

Hej

Jeg har en tabel med 2 kolonner, dato og et nummer.
Fx:
nummmer dato
1001    10-01-2001
1001    15-01-2001
1001    25-05-2002
1002    04-01-2001
...

Det der er opgaven er, at udtrække de numre+datoer hvor datoerne indenfor samme numre ligger med mere end fx 30 dage imellem.
Dvs i eksemplet ville det give:

1001    10-01-2001
1001    25-05-2002
1002    04-01-2001

'1001    15-01-2001' er altså undladt.

Jeg forestiller mig noget med group by på numre, men jeg er i tvivl om hvordan man på en eller anden måde får sat datoerne indenfor hver gruppering i relation til hinanden, fx. en diff på antal dage.

Håber der er nogen der kan hjælpe.

Mvh Jakob
Avatar billede sjap Praktikant
27. juni 2005 - 11:57 #1
Prøv med Mod operatoren på datoen. Mod returnerer resten, når du foretager en division med det angivne tal. Hvis du laver

[Dato] Mod 30

Så vil der stå den rest i feltet, der forekommer når datoen divideres med 30. Det "smarte" skulle så være, at alle tal med samme rest vil ligge med 30 dages mellemrum (eller et eller andet helt tal gange 30 dage).

Du kan derfor gruppere efter  [Dato] Mod 30  beregningen.
Avatar billede jakobnygren Nybegynder
27. juni 2005 - 12:26 #2
Hmm... jeg har forsøgt mig med Mod, men jeg er ikke helt sikker på jeg forstår det (jeg forstår godt selve modulo-operatoren)... Men ideen er, at de datoer der ligger indenfor 30 dage af hinanden (med samme nummer) skal slås sammen til en, eller med andre ord alle undtagen en skal udtrækkes.
Avatar billede jakobnygren Nybegynder
27. juni 2005 - 12:32 #3
Til gengæld ser det umiddelbart ud til at man gøre det du siger, blot med division istedet.

Så jeg siger tak!
Avatar billede jakobnygren Nybegynder
27. juni 2005 - 13:54 #4
Okay, lige en sidste ting (nu er jeg rigtig tæt på at rive min hår ud af hovedet):

Denne her sql gør det jeg gerne vil ha:

SELECT distinct(round(dato / 30)+nummer),nummer
FROM tabel

Men af en eller anden uransagelig (for mig) årsag, så går det i ged når jeg indsætter DATO i select-klausulen:

SELECT distinct(round(dato / 30)+nummer),nummer,DATO
FROM tabel

'round(dato / 30)+nummer' bliver ikke længere unikke. Jeg overser måske noget helt basic, men det er snart 2 år siden jeg sidst har roddet med databaser.

Håber at i vil hjælpe (så jeg kan få fri herfra, og komme hjem :-))
Avatar billede sjap Praktikant
27. juni 2005 - 13:56 #5
Jeg tror også jeg havde misforstået spørgsmålet. Jeg troede du var ude efter datoer med præcist 30 dage imellem ;0(
Avatar billede sjap Praktikant
27. juni 2005 - 14:06 #6
Det skyldes at alle de valgte parametre indgår i vurderingen af om en post er unik.

Problemet er at du vil få 30 forskellige datoer, der hører til hver enkelt værdi i Round([dato]/30)+[nummer]

Så når du tager datoen med i visningen, så kan den samme værdi af Round([dato]/30)+[nummer] forekomme op til 30 gange.

Hvis du vil lave unikke værdier af Round([dato]/30)+[nummer] bliver du nødt til at droppe datoen.
Avatar billede jakobnygren Nybegynder
27. juni 2005 - 14:12 #7
Kan det virkelig være rigtigt at man i Access ikke kan lave en forespørgsel hvor man ønsker at få vist ALLE kolonnerne, men kun de rækker der er unikke ifht EN kolonne?

Altså:
Select distinct(EN KOLONNE),RESTEN...
From ...

?
Avatar billede sjap Praktikant
27. juni 2005 - 14:15 #8
Jo da, men hvilken dato skal den så vise? Der er jo 30 at vælge imellem til hver værdi!
Avatar billede sjap Praktikant
27. juni 2005 - 14:17 #9
Du kan lave en gruppering i forespørgslen, hvor den f.eks. blot medtager den mindste/største/gennemsnit/sum af dato (Menuen Vis/Totaler).
Avatar billede jakobnygren Nybegynder
27. juni 2005 - 14:20 #10
Nu forstår jeg. Ja det kan den ikke bare. Hvilken dato er ligemeget, bare en af dem.
Kan man det?
Avatar billede sjap Praktikant
27. juni 2005 - 14:22 #11
Se kommentaren kl. 14:17:14 :0)
Avatar billede jakobnygren Nybegynder
27. juni 2005 - 15:19 #12
Tak!

Det hele fungerer nu :-)
Avatar billede sjap Praktikant
27. juni 2005 - 15:20 #13
;0)
Avatar billede terry Ekspert
28. juni 2005 - 21:42 #14
I think you need to place an answer sjap :o)
Avatar billede sjap Praktikant
28. juni 2005 - 22:19 #15
Tjah, det er jo nok korrekt. Jeg troede, at jeg havde lagt et svar - det er nok alderen :0)
Avatar billede sjap Praktikant
28. juni 2005 - 22:19 #16
Og så skal man lige huske at trykke på den rigtige knap ;0)
Avatar billede sjap Praktikant
23. august 2005 - 17:48 #17
jakobnygren > Nå det nu virker, så må du gerne acceptere svaret :0)
Avatar billede jakobnygren Nybegynder
24. august 2005 - 09:45 #18
Gjort. Undskyld, jeg har været uopmærksom :-)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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