Postgresql 当两列连接在一起时,如何在字符串agg中添加order by

Postgresql 当两列连接在一起时,如何在字符串agg中添加order by,postgresql,aggregate-functions,Postgresql,Aggregate Functions,上述sql给定错误 错误:在具有DISTINCT的聚合中,ORDER BY表达式必须出现在参数列表中 用于: 如果在order_by_子句之外指定DISTINCT,则所有order by表达式必须与聚合的正则参数匹配;也就是说,您不能对不包含在独特列表中的表达式进行排序 所以试试看 SELECT string_agg( distinct a || '-' || b , ',' ORDER BY a,b) FROM table; 或者在派生表中使用distinct: select string

上述sql给定错误

错误:在具有DISTINCT的聚合中,ORDER BY表达式必须出现在参数列表中

用于:

如果在order_by_子句之外指定DISTINCT,则所有order by表达式必须与聚合的正则参数匹配;也就是说,您不能对不包含在独特列表中的表达式进行排序

所以试试看

SELECT string_agg( distinct a || '-' || b , ',' ORDER BY a,b) 
FROM table;
或者在派生表中使用
distinct

select string_agg(distinct a || '-' || b, ',' order by a || '-' || b)
from a_table;

您使用的是什么版本的Postgres?我使用的是PostgreSQL 9.6请显示您的表结构。您计划在查询中也进行分组吗?没有分组,这是一个连接两列的计划查询。我的查询类似于上面的同一个查询。错误消息说:您必须按照聚合的表达式进行排序。
select string_agg(a || '-' || b , ',' order by a, b)
from (
    select distinct a, b
    from a_table
    ) s;