mysql - Must appear in the GROUP BY clause or be used in an aggregate function (PostgreSQL) -
i have query :
select u.fullname ,s.schedate, sum(case when s.isvisiting =1 s.isvisiting else 0 end) visit , count(s.custid) cust, sum(case when s.isclosing = 1 s.isclosing else 0 end)as orders vmstrschedule s join vmsmsuser u on u.usercode = s.salesmanid u.branchid = 'bll' group u.fullname
but shows error :
must appear in group clause or used in aggregate function
it works in mysql , when tried in postgresql didn't work . want display data , per month :
but if used query :
select u.fullname,s.schedate, sum(case when s.isvisiting =1 s.isvisiting else 0 end) visit , count(s.custid) cust, sum(case when s.isclosing = 1 s.isclosing else 0 end)as orders vmstrschedule s join vmsmsuser u on u.usercode = s.salesmanid u.branchid = 'bll' group u.fullname,s.schedate order u.fullname
it shows data :
if "works" mean arbitrarily selects 1 of possible schedate
values each group, you're correct. however, postgresql , other sql products want explicit value should select
if values same within each group, putting in either group by
clause or arbitrary aggregate (e.g. max(s.schedate)
) should work. if values different, please tell server 1 should select - min
, or max
appropriate.
Comments
Post a Comment