The query tool or reporting cannot do this alone.  But using a mixture of reporting, groups, and querying can accomplish this. Use the following steps to accomplish this:
  1. Run Transaction Report
    • Start with running a transaction report in reports classic filtering for the first year’s time span. For my example, I want transactions for the last 5 years to today (6/21/17). Therefore for the 1st group of transactions, I need to filter the range from 6/21/12-6/21/13.
    • To get to the transaction report, go to Data Management > Report Writer > Transaction Report. Once you get the results, click View.
  2. Add Results to Group
    • From the report results page, click Use Query.
    • In the pop up window, keep the preselected radio button on Create New Group > Click Go.
    • Name the group and select the group type.I suggest coming up with a naming convention that keeps your groups organized.(for example: Group 1 (bb test 6/21/17) 6/21/12-6/21/13) I used the group number then the name of the query then the date range.
  3. Repeat steps 1 & 2
    • To create the other groups that you need. Note: you will want to start with the day after the last day in the previous report.  Once you have all of your groups, they should look something like this:
User-added image(right click and Open Image in new tab to better view)
 
  1. Create Your Query
    • Go to Data Management > Query > Create New Query.
    • Once you name your query and you’re on the Query Builder Page, click Add Group Clause > Search for your first group > select it and save.
    • Repeat this process to include all the groups you created. Make sure that AND is between all of the groups. Just for good measure I added parenthesis around the whole query but I don’t think its fully necessary.
    • This is what my query looked like:
User-added image
  1. Save and Run Query
    • This should pull in only the constituents who have donated in every one of the groups you created (in my example, those who have donated at least once every year for 5 years straight).