This is the MS Access
related query.
I have a table with three columns: FName, FValue and VDate
in MS Access.(The actual table is quite big but the following example is for reference.)
!http://postimg.org/image/bx0grwoa3/
Now I want to get a following kind of query output: Get the minimum quarterly values for each unique name. For example: !http://postimg.org/image/je1w7gdi1/
So far I am able to get the output for one quarter by hardcoded criteria, by using the following (In MS Access)
SQL string is:
SELECT Table.FName, Min(Table.FValue) AS MinOfFValue, First(Table.VDate) AS FirstOfVDate
FROM [Table] LEFT JOIN [Table] AS Table_1 ON Table.FValue = Table_1.FValue
WHERE (((Table.VDate)>#3/31/2014# And (Table.VDate)<#7/1/2014#))
GROUP BY Table.FName;
Now instead of the putting date hard coded, I want the dates to be part of a table where Quarter name, from date and to dates are there and Access takes them one by one and give the desired output.
Thanks in advance.
Make a new tables "quarters" with fields for Yr, Qtr, Start and End. Start and End are date/time fields:
Then use this query:
Note - there is no join between the two tables in the query.
The 2nd problem is a bit more difficult than the 1st. My approach would be to use 3 separate queries to get the answer:
Query1 returns a record for each record in the original table, adding the year and quarter from the quarters table. Note that instead of using the quarters table, you could just as easily calculate the year and quarter from the date.
Query2 uses the results of Query1 and finds the minimum values you need:
Query3 matches the results of Query1 and Query2 to show the data on which the minimum value was reached. Note that I made this a Sum query and used First(VDate), assumining that the minimum value may have occurred more than once and you need only the 1st time it happened.
There's probably a clever way to do this all in one query, but this is the way usually solve similar problems.