I am trying to use a window function, but it's not working. The subquery is effectively aggregating.
> On May 17, 2016, at 6:18 , David G. Johnston <david.g.johns...@gmail.com> > wrote: > > On Tue, May 17, 2016 at 12:04 AM, Guyren Howe <guy...@gmail.com > <mailto:guy...@gmail.com>> wrote: > On May 16, 2016, at 20:48 , David G. Johnston <david.g.johns...@gmail.com > <mailto:david.g.johns...@gmail.com>> wrote: >> >> On Monday, May 16, 2016, Guyren Howe <guy...@gmail.com >> <mailto:guy...@gmail.com>> wrote: >> I have this SELECT clause as part of a larger query: >> FIRST_VALUE(drs.id) OVER (PARTITION BY drs.order_ID ORDER BY drs.position >> ASC) AS current_drs_id >> Seems reasonable to me: group and sort the fields in this table and give me >> the first value. >> >> But I get "column "drs.id <http://drs.id/>" must appear in the GROUP BY >> clause or be used in an aggregate function". >> >> Huh? >> >> The larger query would help… > > SELECT > o.id, > os.status AS status, > o.status_updated_at, > o.should_hold_at_airlines, > (SELECT drs2.id FROM delivery_route_segments drs2 WHERE drs2.order_id = > o.id AND NOT drs2.completed ORDER BY drs2.position LIMIT 1) AS current_drs_id, > > > FROM > orders o JOIN > order_statuses os ON (o.status = os.id) JOIN > delivery_route_segments drs ON (drs.order_id = o.id) JOIN > pick_up_addresses pua ON (pua.order_id = o.id) > GROUP BY > o.id, os.status > I would prefer to do the subquery as a window function, both because that is > cleaner to read and also because I believe it is likely to be more efficient. > > > This query is non-functional. It has a GROUP BY without any aggregate > functions and not all of the selected columns are in the group by. > > David J. >