It's about correct results not some relational purity. If invoice_header.vendor_name is always the same than GROUP on it, otherwise use MIN/MAX if you don't care wich one is returned.
>I sort of agree with you and sort of don't. Agreed in the sense that relational purity is a good thing and always a noble objective. And SET ENGINEBEHAVIOR is a kludge for sure. In practice I doubt the allowance of slack GROUP BY constructs does much harm. Here's sort of your classical example. You are summarizing invoice records (headers and details) and one of the things you want back in the result set is the name of the vendor. Isn't invoice_header.vendor_name generally if not always going to be the same? Forcing additional subqueries or trips to the server is probably overkill in the name of purity. JOMO, of course.
--sb--