I recommend you use Jasper Reports with its client Jaspersoft Studio. I have used its predecessor iReport quite often and with much success. For my needs the community version was always sufficient so I didn't personally tried the extended products but heard good things about them.
Jasper Reports come in three parts: One is a library that you ship with your Java Program that takes the second part, the JRXml File that contains the technical definition of the report and produces a nice output.
The third part is the JRXml creator tool (the Studio, formely iReport), a tool that has a workable GUI that lets you drag and drop the elements of your reports to make what you want to show. It includes a drag and drop SQL designer that will do most simple queries like "SELECT * FROM a, b, c WHERE a.identifier = ? AND a.id = b.a_id AND c.id = a.c_id"
. But it has its limits and sometimes your customer will call upon you to help her get that query right until she gets to know SQL.
The Creator also comes with an datasource connection tool, so you can create the reports using only the Creator. If you have only one person at the customer who needs the reports, then this could be the way to go instead of shipping the library with your tool.
Jasper Reports work like this: You first define the query of the data you want to select. Usually that involves some parameters that come from your program, like a customer id. Then you define that parameters for the report itself so that JR can connect them later when its time to run the report.
You then let the Creator grab all the fields your report will return from the query and store them as "Field" which you then drag and drop to where you want to have them. You decide which information you want to have shown on top of the first page (like the customer name), which information to present on top of each page (like a cumulative amount) and which information you want to show on each line. There are more places than this, but you get the point.
If you want to have cumulative elements you use variables to codify them, you select the field they cumulate and the way they do so. Each cumulation is performed per line that comes from your query. You can drag and drop the variables just like the parameters and the fields directly to where you want to have them.
Jasper Reports can do a lot of the reporting stuff quite easily but they are not end-user compatible. Using the Creator Tool has a learning curve. If you hand your customer some simple example reports for her specific dataset you will make it much easier for her.
Stack Overflow has a lot of good resources for questions on Jasper Reports.