SELECT string_agg( distinct a || '-' || b , ',' ORDER BY a,b)
FROM table;
以上sql给出错误
错误:在使用DISTINCT的聚合中,ORDER BY表达式必须出现在参数列表
中
答案 0 :(得分:3)
如果除了order_by_clause之外还指定了DISTINCT,那么所有ORDER BY表达式必须匹配聚合的常规参数;也就是说,您无法对未包含在DISTINCT列表中的表达式进行排序。
所以试试
select string_agg(distinct a || '-' || b, ',' order by a || '-' || b)
from a_table;
或在派生表中使用distinct
:
select string_agg(a || '-' || b , ',' order by a, b)
from (
select distinct a, b
from a_table
) s;