此次举例为在部门表(depart)中查询该指定code为1.2.3.4各个大类部门下的全部细分部门
postgres数据库同表聚合分组查询表内多个参数报错column "sd.dep"must appear in the group by clause or be used in an aggre
解决方法有两种:
第一种子查询:
select a.parent_code,b.name,a.aname from
(select parent_code,string_agg(name,',')as aname from depart group by parent_code) a
left join depart b on a.parent_code=b.code where a.parent_code in('1','2','3','4') ;
第二种指定多列分组
select a.parent_code,b.name,string_agg(a.name,',') as aname from depart a left join depart b on a.parent_code=b.code where a.parent_code in('1','2','3','4') group by a.parent_code,b.name;
注意:
每多一个需要输出的非聚合参数(如:a.parent_code,b.name)
如是第一种,尽量安排在左查询表里
如是第二种,直接在group by后面添加该参数。