Avatar billede lbthomsen Nybegynder
28. november 2007 - 20:46 Der er 8 kommentarer og
1 løsning

Sidste post i Access

Jeg har en tabel med en række datoer og tilhørende beløb og kundenumre og ønsker at lave en forespørgsel som returnerer den sidste post (sorteret efter dato) for hvert kundenummer.

Jeg har forsøgt med funktionen "sidste", men forespørgslen returnerer den sidst indtastede post og ikke den sidste dato.
Det er ligegyldigt, hvordan end jeg sorterer mine data i tabellen.

Kan I hjælpe?
Avatar billede kabbak Professor
28. november 2007 - 21:02 #1
SELECT Kunde.Kundenummer, Kunde_1.Dato, Kunde_1.Beløb
FROM Kunde INNER JOIN Kunde AS Kunde_1 ON Kunde.Kundenummer = Kunde_1.Kundenummer
GROUP BY Kunde.Kundenummer, Kunde_1.Dato, Kunde_1.Beløb
HAVING (((Max(Kunde_1.Dato))=Max([Kunde]![dato])))
ORDER BY Kunde_1.Dato;


prøv at teste
Avatar billede Slettet bruger
29. november 2007 - 00:45 #2
Tabel1:
Kundenr
Dato
Beloeb

Forespørgsel1:
SELECT Tabel1.Kundenr, Tabel1.Dato, Tabel1.Beloeb
FROM Tabel1
GROUP BY Tabel1.Kundenr, Tabel1.Dato, Tabel1.Beloeb
ORDER BY Tabel1.Kundenr, Tabel1.Dato;

Forespørgsel2:
SELECT Forespørgsel1.Kundenr, Last(Forespørgsel1.Dato) AS SidsteOfDato, Last(Forespørgsel1.Beloeb) AS SidsteOfBeloeb
FROM Forespørgsel1
GROUP BY Forespørgsel1.Kundenr;
Avatar billede lbthomsen Nybegynder
30. november 2007 - 16:11 #3
Når jeg står i designvisning i tabellen, hvordan kommer jeg så ind og skriver kommandoerne?
Avatar billede kabbak Professor
30. november 2007 - 16:15 #4
Lige under Filer, den knap man skifter designvisning med,klik på pilen ved siden af , vælg SQL
Avatar billede lbthomsen Nybegynder
30. november 2007 - 17:27 #5
Jeg har nu forespørgsel1:

SELECT Posteringstabel.Aftalenr, Posteringstabel.Beløb, Posteringstabel.Dato, Posteringstabel.Posteringstype
FROM Posteringstabel
GROUP BY Posteringstabel.Aftalenr, Posteringstabel.Beløb, Posteringstabel.Dato, Posteringstabel.Posteringstype
HAVING (((Posteringstabel.Posteringstype)=2))
ORDER BY Posteringstabel.Dato;

Forespørgsel 2:

SELECT Forespørgsel1.Aftalenr, Last(Forespørgsel1.Beløb) AS Sidsteofbeløb, Last(Forespørgsel1.Dato) AS SidsteofDato
FROM Forespørgsel1
GROUP BY Forespørgsel1.Aftalenr;

Poster i forespørgsel 1:
Aftalenr    Beløb    Dato    Posteringstype
2004127    -100    25-11-2007    Rente
2004215    -100    25-11-2007    Rente
2004127    -80    27-11-2007    Rente
2004127    -60    28-11-2007    Rente
2000662    -50    30-11-2007    Rente
2004127    -50    30-11-2007    Rente
2004215    -50    30-11-2007    Rente
2000662    -100    01-12-2007    Rente

Poster i forespørgsel 2:

Aftalenr    Sidsteofbeløb    SidsteofDato
2000662    -50    30-11-2007
2004127    -50    30-11-2007
2004215    -50    30-11-2007

Posten d. 01-12-2007 burde være sidst ved aftalenummer 2004127, men er det ikke?
Avatar billede lbthomsen Nybegynder
03. december 2007 - 14:22 #6
kabbak - jeg kunne ikke få dit forslag til at virke.

Er det forudsat at der er en tabel kaldet kunde og en anden kaldet kunde_1?

Har du et forslag ud fra ovenstående eksempel med disse tabel- og kolonnenavne?
Avatar billede kabbak Professor
03. december 2007 - 15:15 #7
Nej, det er samme tabel taget ind 2 gange
så i dit tilfælde

SELECT Posteringstabel.aftalenr,Posteringstabel_1.Beløb o.s.v.
Avatar billede lbthomsen Nybegynder
03. december 2007 - 16:12 #8
Perfekt!

kabbak - vil du sende et svar og modtage point?
Avatar billede kabbak Professor
03. december 2007 - 17:36 #9
et svar ;-))
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