We could spawn a full discussion on this, but here is my take:
CQWP or DVWP (or the more powerful, SharePoint 2010 specific web part XSLTListView WebPart) could do the job, you could even consider the CoreSearchResults web part. The reasoning behind choosing one or the other could be:
- Source of data: Single list? Multiple lists? Custom content type?
Current Sub-Site, Cross Sub-Sites, or even Cross Site Collections or
the whole Farm? In either cases you need to consider:
- XSLTListView web part is easy to use with a single list or linked lists - manual process via SharePoint Designer 2010.
- CQWP - cross sites (!webs, not site collection), also Content Type based queries, selectable fields (via slots), customizable XSLT
(3 of them) - probably best bet in your case (see here for an
example of how to add custom functions, such as a random function
selector @
http://blog.mastykarz.nl/extending-content-query-web-part-xslt-custom-functions/)
- CoreSearchResults - works cross site collections too, various selection possibilities - require some administration permissions
and a proper Search SA configured, e.g. Search Scopes to match your
needs.
- Customization capabilities - all XSLT based web parts enable you to customize output, some of them via browser UI (CQWP or CoreSearchResults) or via SPD 2010 (XSLTListView / DataView)
- Custom web parts, which could include loading jQuery library, plus a lot of plug-ins adding, which in combination with CSOM (client-side Object Model for ECMA Javascript) could give quick access to data. Also you have to consider whether Sandbox is an issue, as it does already restrict options, plus scope, e.g. only within a site collection.
Finally, it depends on your possibilities & constraints, skills, time you want to invest.