A report definition generates SQL that can only get scalar values back. Since a value list is a one to many, you can choose to get only the first (or any other specific) entry back by giving .pyAccessGroupsAdditional(1) in the report definition and it would use the UDFs in the database to get just the first entry.
For page lists or page groups, you would have to create the declare index rule and then use that in the "data access” tab of the report definition.
I will pass on your feedback to product management so that they can decide on the best way to achieve this.
Thanks. Yes, I can see how a programmer can see the Report Definition as an elegant SQL generator (which it is, and generally a good one at that). But if Pega wants to get architects to be able to think beyond traditional RDBMS limitations, this is one place to do so.