>Actually, FirstVal() and LastVal() aggregate functions would give us the best of both worlds - they'd be fairly simple to implement, therefore fast, and would count as aggregate functions. Now if we only had a way to influence the standard :).
If, in fact, the value of the non-aggregrate fields in the list is known to not vary then one can always wrap them in a MAX() or MIN() to pass the standard rules.