use*_*990 5 postgresql aggregate-functions
SELECT string_agg( distinct a || '-' || b , ',' ORDER BY a,b)
FROM table;
Run Code Online (Sandbox Code Playgroud)
上面的sql报错
错误:在具有 DISTINCT 的聚合中,ORDER BY 表达式必须出现在参数列表中
对于文档:
如果除了 order_by_clause 之外还指定了 DISTINCT,则所有 ORDER BY 表达式必须与聚合的常规参数匹配;也就是说,您无法对未包含在 DISTINCT 列表中的表达式进行排序。
所以尝试一下
select string_agg(distinct a || '-' || b, ',' order by a || '-' || b)
from a_table;
Run Code Online (Sandbox Code Playgroud)
distinct或在派生表中使用:
select string_agg(a || '-' || b , ',' order by a, b)
from (
select distinct a, b
from a_table
) s;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3989 次 |
| 最近记录: |