Avatar billede mim007 Nybegynder
20. januar 2005 - 11:33 Der er 20 kommentarer og
1 løsning

udvælge den nyeste dato

Hej
Jeg har en database med 8300 poster, som indeholder afdeling og antal tilmeldte kunder på forskellige datoer. Jeg vil kun have den seneste opdatering ud for hver enkelt måned.
Eks er der indberetninger d. 2., 7., 9. for observation.
En anden er det d. 22 og 31. Så i de to tilfælde skal den hive 9 og 31 ud.
Det skal lige siges, at datoen står i et felt: 01-01-2005
20. januar 2005 - 11:39 #1
Prøv denne SQL:

Select Format([Din dato],"yyyymm") as ÅrMåned, Max([Din dato]) as Dato GROUP BY Format([Din dato],"yyyymm")
Avatar billede mugs Novice
20. januar 2005 - 11:40 #2
Træk datofeltet og kunder ned i forespørgslens gitter og sorter falden på datoen. Gå i SQL visning og efter Select til føjer du TOP 1, så der står.

SELECT TOP1 ...
Avatar billede mim007 Nybegynder
20. januar 2005 - 11:44 #3
Her er min SQL: SELECT  ventetid.beh, ventetid.sghnavn, ventetid.vtidf, ventetid.vtidb, ventetid.ambub, ventetid.adgang, ventetid.opdat
FROM ventetid;

Datoen er ventetid.opdat. Hvis jeg skriver top1 efter select virker det ikke.
20. januar 2005 - 11:45 #4
rettelse:

SELECT Format([Din dato],"yyyymm") AS ÅrMåned, Max([Din Dato]) AS Dato
FROM [din tabel]
GROUP BY Format([Din dato],"yyyymm");
20. januar 2005 - 11:49 #5
SELECT Format([opdat],"yyyymm") AS ÅrMåned, Max([opdat]) AS Dato
FROM [ventetid]
GROUP BY Format([opdat],"yyyymm");
20. januar 2005 - 11:50 #6
Mugs, din SQL finder jo kun den største dato totalt! Ikke pr måned...
20. januar 2005 - 12:00 #7
takker :)
Avatar billede mugs Novice
20. januar 2005 - 13:10 #8
Detaljer Thomas - detaljer :o)
20. januar 2005 - 13:13 #9
I know, Mugs - I know :o)
Avatar billede mim007 Nybegynder
20. januar 2005 - 13:30 #10
jeg fik vist givet point for tidligt. Der er stadig dubletter i data. Har I nogen bud på, hvad man så skal gøre?
Avatar billede mim007 Nybegynder
20. januar 2005 - 13:32 #11
sql: SELECT ventetid.beh, ventetid.sghnavn, ventetid.vtidf, ventetid.vtidb, ventetid.ambub, ventetid.adgang, Format([opdat],"yyyymm") AS ÅrMåned, Max(ventetid.opdat) AS Dato
FROM ventetid
GROUP BY ventetid.beh, ventetid.sghnavn, ventetid.vtidf, ventetid.vtidb, ventetid.ambub, ventetid.adgang, Format([opdat],"yyyymm");
20. januar 2005 - 13:34 #12
Ja, det duer ofte ikke, når man tager flere kolonner med. For så er posterne ikke længere ens og der kommer derved dubletter.

I stedet kan du lave en ny forespørgsel baseret på denne, hvor du joiner op på datoen (hvis den ellers er unik)
Avatar billede mim007 Nybegynder
20. januar 2005 - 13:36 #13
datoen er ikke helt unik, idet indberetninger jo for forskellige afdelinger godt kan ske på den samme dato.
20. januar 2005 - 13:37 #14
Men er det så ikke bare højeste dato for hver måned, for hver afdeling, som du i virkeligheden ønsker?
Avatar billede mim007 Nybegynder
20. januar 2005 - 13:39 #15
jo
Avatar billede mim007 Nybegynder
20. januar 2005 - 13:39 #16
plus de informationer, der hører til den dato
20. januar 2005 - 13:42 #17
Så skal din første forespørgsel se sålede ud:
SELECT Format([opdat],"yyyymm") AS ÅrMåned, Max([opdat]) AS Dato, Afdeling
FROM [ventetid]
GROUP BY Format([opdat],"yyyymm"), Afdeling

Herefter kan du lave en ny forespørgel baseret på denne og på ventetid. Disse 2 joines på dato og afdeling og de resterende felter medtages.
Avatar billede mim007 Nybegynder
20. januar 2005 - 13:50 #18
mange tak. men der er også en underafdeling for hver afdeling. Kan du hjælpe med det også :-)
20. januar 2005 - 13:52 #19
SELECT Format([opdat],"yyyymm") AS ÅrMåned, Max([opdat]) AS Dato, Afdeling, Underafdeling
FROM [ventetid]
GROUP BY Format([opdat],"yyyymm"), Afdeling, Underafdeling

Er der flere? ;o)
Avatar billede mim007 Nybegynder
20. januar 2005 - 13:57 #20
nej
20. januar 2005 - 13:59 #21
:o)
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