我的LISTAGG
功能出错了。我一直收到错误 ORA-00937:不是单一的群组功能。我已经搜索了这个错误,但仍然不清楚错误。
方案: 我有一个细分表。一个细分可以分配多个人(一对多)。我需要我的输出/报告来显示一列中的段号和另一列中的用户列表。
查询:
select fcs.nld_flood_control_segment_id
, fcs.fc_segment_name
, fcs.fc_segment_abbrev_name
, LISTAGG(ps.first_name|| ' ' ||ps.last_name, ', ') within group (ORDER BY fcs.nld_flood_control_segment_id, ps.last_name) "ListOfReps"
from nld_flood_control_segments fcs
, nld_fc_segment_person_xref xr
, persons ps
where fcs.nld_flood_control_segment_id = :P1_id
and :P1_id = xr.nld_flood_control_segment_id
and xr.person_id = ps.person_id
order by nld_flood_control_segment_id asc
;
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:2)
LISTAGG函数具有以下语法结构:
LISTAGG( [,]) WITHIN GROUP (ORDER BY ) [OVER (PARTITION BY )]
LISTAGG是一个聚合函数,可以选择用作分析(即可选的OVER()子句)。以下要素是强制性的:
the column or expression to be aggregated;
the WITHIN GROUP keywords;
the ORDER BY clause within the grouping.
示例:
LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees
请尝试以下操作,看看它是否能满足您的需求。
LISTAGG(ps.first_name|| ' ' ||ps.last_name, ',') within group (ORDER BY ps.first_name|| ' ' ||ps.last_name) "ListOfReps"