27. juni 2005 - 10:58Der 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.
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.
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.
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 :-))
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 ...
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.