Forum Discussion
Select MIN of 4 Dates
- May 19, 2022
what do you mean by "current date"? isn't it the same with Date()?
see if the Conditions are met in the new function.
1. create a simple query for MyTable
2. View the query in 'design view'
3. Set the column holding your 'date' field to "Descending" (This establishes the priority for the most recent dates) and set the criteria for that column as "Is Not Null" (this will eliminate null values from the query).
4. While still in design view for the query, look for and select the 'Query Design' tab at the top.
5. In the 'Query setup' area, look for the 'Return: All' selection box, and change the 'All' to '5'.
6. This will return the top 5 most recent dates.
* You can manually type in the number '1' in the 'Return:' selection box, This will return only the top 1 entry.
- Tony2021May 17, 2022Iron Contributor
Hi, thanks for the response.
I have followed as above but I dont completely understand why I would lmite the results to 5. I would remove records that I need. Maybe I am not understanding or maybe I need to explain a bit further.I have attached the output based on the query paramters above ( but I am showing ALL).
How would I bel able to return the MIN of the date for each ID?
I assume another query will need to be made. What is tricky is that I need to remove any dates in the past though so if it is a MIN in the record and if <Today then do not consider it.
- arnel_gpMay 18, 2022Iron Contributor
I agree with Normalization, but if you are unable to do it, you can still get the Min Date by calling
a UDF (user defined function) from your Query.
See Module1 for the function.
Open Query1 that uses this function.
- Tony2021May 19, 2022Iron Contributor
HI Arnel, you are correct that I am not able to Normalize at this point. It would require a lot of rework. I know of this concept but didnt think to apply it to dates. I know this now so a good lesson brought up by George.
I have looked at the db udf and query. It looks great & performs as intended.
I did leave out a point since I was going to figure out a solution on my own but the function I do not understand how to modify and kindly ask your assistance.
What I need now is to return the MIN but I need to consider the current date.
I will try to summarize in english:
(1) If all dates are >Date() ===>return the MIN (as the UDF does now)
(2) Exclude any dates that are <Date() however if all Dates are <current date then return the MIN of those dates that are <current date.I hope its not confusing. Grateful for the assistance. thank you in advance. Happy to add more detail if needed.
- George_HepworthMay 17, 2022Silver ContributorThis screen shot clearly shows the "spreadsheet" style table problem. It is even shown in Excel, not Access! The solution is as I noted earlier. Correct the table design.
- Tony2021May 17, 2022Iron ContributorHI George,
Ok I understand your point on normalization but wouldnt the problem still exist if it were normalized? I have seen CASE used for this but its beyond my level.
here is an example
https://stackoverflow.com/questions/47965825/sql-query-case-when-min-closest-date-to-today
thank you