@dgranger70 Thanks for your great idea! I have successfully implemented the requirement with a pure no-code nested Generic Inquiry approach (no custom fields, no report export, no import scenario). I would like to share my working solution for reference:
Step 1: Create Sub GI 1 (Recent 30 Days Order Count)
Query the SOOrder table, filter valid orders from the last 30 days, group by CustomerID, and calculate the total order count as Count30.
Step 2: Create Sub GI 2 (Recent 180 Days Order Count)
Query the same SOOrder table, filter valid orders from the last 180 days, group by CustomerID, and calculate the total order count as Count180.
Step 3: Master GI for Final Calculation
Join the above two sub GIs on CustomerID, then calculate the frequency ratio:
Ratio = Count180 / Count30
I encountered a small issue here: the calculation result is automatically rounded to an integer, and I cannot keep 2 decimal places in the GI formula.
Business Logic & Dashboard Filter
The core logic is to compare the recent purchase activity with the customer’s historical average frequency:
For example, if a customer placed 60 orders in 180 days, the average 30-day frequency is 10 orders. If they only placed 7 orders in the latest 30 days, the ratio is 8, which is much higher than our threshold.
Finally, I embedded this master GI into the Dashboard and set a filter to only display customers with Ratio > 7. These customers are identified as having a significant drop in purchase frequency and require sales follow-up to prevent churn.
This method is fully dynamic, real-time, and zero-maintenance.