1. A system comprising a double counting resolver module configured for storage on a memory and configured to execute on a processing portion to: receive at a first input a request to execute a raw SQL query requesting a new report or modification to an existing report, where the raw SQL query is configured to access one or more source data tables in a database; scan the raw SQL query and identify columns in the one or more source data tables that will see double counting aggregation errors when the raw SQL query is run on them; generate a modified SQL query that achieves an intent of the raw SQL query but without the double counting aggregation errors, wherein the modified SQL causes the processor to perform the following: (1) form a common table expression (CTE) by: joining the one or more source data tables to form a CTE joined table; and creating the CTE as a selection from the CTE joined table; and (2) perform sub queries to the CTE including: performing a data selection sub query for each source data table, selecting non-repeating rows for each source data table from the CTE, where each sub query produces a filtered sub query results table; and performing an aggregation sub query on each of the filtered sub query results tables, where each aggregation sub query produces an aggregated sub query results table; (3) joining the aggregated sub query results tables to form an aggregated joined table; and (4) perform a main query for columns from the aggregated joined table for return as the final results set.