De op één na hoogste waarde

Status
Niet open voor verdere reacties.

anlag1

Gebruiker
Lid geworden
31 okt 2010
Berichten
144
Hallo allemaal,

Met de sql functie MAX kun je de hoogste waarde uit een kolom met velden halen.
Maar nu wil ik de op één na hoogste waarde hebben, hoe met ik dat doen?
Gr.
André:rolleyes:
 
Via deze query kun je de op 1 na hoogste waarde ophalen

Code:
SELECT Max(jetabelnaam.jekolomnaam)
FROM jetabelnaam
WHERE jetabelnaam.jekolomnaam<
(
SELECT MAX(A.jekolomnaam)
FROM jetabelnaamAS A
)

Query moet je maken in het SQL weergave venster.

Tardis
 
Laatst bewerkt door een moderator:
Ik veronderstel dat je bv een ID wilt gebruiken met numerieke waarde?
Als je je tabel benadert via een formulier kan je het ook doen met de volgende formule die je invult bij de standaardwaarde van je veld op het formulier

Code:
Nz(DMax("jeveldid";"jetabelnaam");0)-1

(Als het laatste Id dus bv 1710 was in je tabel zal het formulier 1709 tonen, speel je met die -1 en maak je daar iets anders van dan krijg je navenant resultaat)
Terug op voorwaarde dat je je tabelen altijd benadert via formulieren vind ik dat beter dan de autonummering van ID's te gebruiken in tabellen.
 
Laatst bewerkt:
@JohanRVT,

jouw benadering werkt alleen als er sequentieel opeenvolgende nummers zijn.
Je methode is daarom niet waterdicht en ergo niet aan te bevelen.

Tardis
 
Heren,
Het gaat om een veld genaamd [revisie] in de tabel [tbl_revisions] hierin komen zowel numerieke als alfanumerieke waarden voor.
Gr.
André
 
En hoe denk je dan de hoogste waarde te vinden? Is 4500TZ hoger dan WQ4300 bijvoorbeeld? Geef eens wat voorbeelden hoe (en op basis waarvan) je de berekening wilt maken.
 
je hebt gelijk, zo heb onvoldoende informatie.
Het gaat om een tbl_revisions, hier in worden revisies bijgehouden van documenten.
in de tabel is een kolom [LISTNUMBER] met documentnummers en een kolom [REVISION] hierin staan de revisie van de documenten. bijv.
nr. 110056 revisie A
nr. 110056 revisie B
nr. 110056 revisie C
etc.
de revisies zijn uniek binnen het documentnr, en als ze begonnen zijn met een letter, zal er halverwege niet worden overgegaan naar een cijfer
andersom als een revisie van een document begint met een cijfer zal het geen letter meer worden bij een revisie verhoging.
nu wil van een bepaald document de op één na laatste revisie hebben in dit geval dus B
en dit gegeven 110056 en revisie B gebruiken als criteria om te zoeken in een andere tabel

Gr.
Andre
 
Maar hoe zien de gegevens er nu echt uit? Je wekt nu de indruk dat in het veld [ListNumber] de waarde 110056 staat, en in [Revision] A, B, C etc of 1,2,3 en zo verder... Of staat er in het veld [Revision] letterlijk '110056 revisie B'?
 
Op basis van twee kolommen, kan het in ieder geval met twee queries. Eén query filtert de hoogste waarden per revisie er uit, de tweede pakt uit de eerste query de hoogste.

Code:
SELECT Blad2.ListNumber, Blad2.Revision
FROM Blad2 AS T1 INNER JOIN Blad2 ON T1.ListNumber = Blad2.ListNumber
WHERE (((Blad2.Revision)<DMax("[Revision]","[Blad2]","[Listnumber]=" & [Blad2].[Listnumber])))
GROUP BY Blad2.ListNumber, Blad2.Revision;

Code:
SELECT qRevisienummers.ListNumber, Max(qRevisienummers.Revision) AS MaxRevision
FROM qRevisienummers
GROUP BY qRevisienummers.ListNumber;

Het zal ook wel met één query kunnen, maar die krijg ik nog niet werkend...
 
In kolom [LISTNUMBER] staat '110056' en in de kolom [REVISION] staat 'B'
Gr.
André
 
Dan werkt bovenstaande methode :D
 
Michel,
Kun je uitleggen hoe e.e.a. werkt m.n. onderstaande code:
Code:
FROM Blad2 AS T1 INNER JOIN Blad2 ON T1.ListNumber = Blad2.ListNumber

Bedankt
André:eek:
 
@JohanRVT,

jouw benadering werkt alleen als er sequentieel opeenvolgende nummers zijn.
Je methode is daarom niet waterdicht en ergo niet aan te bevelen.

Tardis


@ tardis,
deze methode is welliswaar achterhaald om het probleem op te lossen (gezien de informatie die nu werd verkregen) maar de DMax functie werkt wel degelijk waterdicht om de hoogste waarde te vinden al zijn er nummers uit de reeks verwijderd, er moet dus geen sequentie zijn.
 
@JohanRVT,

probeer jouw eerdere suggestie eens uit in een omgeving waarin nummers uit jouw reeks zijn verwijderd.
Je zult zien dat jouw suggestie dan namelijk niet werkt.

Tardis
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan