If you could describe the nature of this data and the nature of the reports you produce on it, someone could provide specific guidance.
If this data is time related (values stored over time and the date/time is important) and you must have all of it available, one choice would be to summarize old data. For example if you have multiple samples for each day but you are producing reports that always process this data in the same way, such as min, max, average, count..., then pre-analyze the data for each day and store the results for each day instead of each piece of data for that day.
You could also break up the data by time periods (each year as an example) and store it in separate databases. This would require that your reports query each database that stores data in the date range of the report.
If the data and reports are organized by some sub value and are always filtered using that sub value, such as a clients name, you could create separate databases for each letter of the alphabet (A, B, C...) or even for each client's name or ID.