Microsoft Sql Server Reporting Services (SSRS) is mostly pretty good. The report designer is ok, the flexibility you get with web services and the ASP.NET ReportViewer component is pretty good. If you're already running Sql Server then SSRS pretty much comes for free.
One aspect of SSRS that isn't too good however, is the default interface for running the reports. Officially known as 'Report Manager', but more commonly known as 'that thing you run reports with', it has a lot of shortcomings.
The key features are:
- Nice clean jQuery/ajax interface for choosing reports and choosing parameters
- For reports with lots of optional parameters, users choose which ones they want to use (instead of all parameters being displayed by default)
- Better support for multi-pick parameters using Eric Hynds' jQuery UI MultiSelect Widget, which allows filtering within the multi-pick
- CrissCross allows you to retrieve parameter choices you have used in previous runs of the report by pulling the data from the SSRS report log
- Simplified home page shows the user the report they run most often, and the reports they have run most recently
- CrissCross is open-source so you can take it and modify it to meet your needs
For more details, see the documentation and screenshots on Github.
(edit: changed old codeplex links to github)