Juiste record selecteren bij gelijke velden

Status
Niet open voor verdere reacties.

Hansdegans

Nieuwe gebruiker
Lid geworden
24 feb 2014
Berichten
4
Ik zit met het volgende probleem en via zoeken kom ik helaas niet veel verder omdat ik het lastig vind om te omschrijven:

Het gaat om volgende tabel. De bedoeling is om uit te rekenen hoe lang we er over doen om een order afgerond te krijgen na de uitvoering.
Nu hebben we 3 situaties:
1. Een Order kan afgerond zijn wanneer de status Afronden is. Dit is het geval in order 10001. Dit is gewoon simpel de tijden van elkaar afhalen.
2. In geval 10002 is de order afgerond op het moment dat de status Controleren heeft. Ik wil dus alleen het tijdstip zien dat bij Controleren hoort. Deze wil ik daarna vergelijken met de uitvoertijd.
3. In geval 10003 en 10004 wil ik het laatste tijdstip van Controleren hebben en deze weer vergelijken met de uitvoertijd.
Heeft iemand een idee hoe ik in situatie 2 en 3 het juiste tijdstip naar voren krijg? Ik heb het geprobeerd met Laatste/Eerste alleen levert dit een Afronden en Controleren tijd op. Ik wil uiteindelijk maar 1 tijd eruit krijgen per ordernummer.

Bekijk bijlage Orders.zip
 
Dat kan niet met één query, omdat je verschillende dwingende voorwaarden hebt. Ofwel je kijkt naar de laatste Controleren datum, ofwel je kijkt naar de laatste Afronden status. Daar zou ik dan 2 queries voor maken, die je met een UNION query weer samenvoegt.
 
Fijn om te weten dat het in ieder geval niet in één query kan. Is het wel mogelijk om zo'n query te maken dat ik bij alleen resultaten krijg waarbij een ordernummer alleen afronden heeft en dus resultaten die ook controleren hebben niet meeneemt? Ik denk dat ik er dan moet zijn met laatste. Ik wil alleen het laatste tijdstip van controleren zien of alleen afronden, als er geen controleren in het ordernummer zit.
 
Bedoel je zoiets?
Code:
SELECT Order, Max(Tijd) AS Tijd FROM tbl_orders WHERE (Status="Afronden") GROUP BY Order;
 
Bijna, hij mag alleen Afronden weergeven als er geen Controleren is met hetzelfde ordernummer.
 
Dan krijg je zoiets:
Code:
SELECT Order, Max(tbl_orders.Tijd) AS Tijd FROM tbl_orders
WHERE ((Status="Afronden") AND ((Val(DCount("[Status]","tbl_orders","[Order] = " & [Order] & " AND [Status] = 'Controleren'")))=0))
GROUP BY tbl_orders.Order;
Tenzij ik het weer verkeerd begrijp natuurlijk :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan