如何对转换后的字段进行排序。有类似的问题,但是我不知道为什么它对我不起作用
-- 'number' 字段是一个整数
string_agg(distinct cast(number as varchar(4)) , ', ')
然而结果以非常奇怪的随机顺序返回
Results
12,11,10,1,29
我只是想让它正常排序 1,10,11,12,29
我根据可用的帖子尝试了此代码,但它没有工作并收到以下错误
string_agg(
distinct cast(number as varchar(4)),', ' order by number)
as SPJ
--ERROR: in an aggregate with distinct order by expressions must appear in argument list
所以也试过了,不是我想要的答案
string_agg(
distinct cast(number as varchar(4)) , ', ' order by
cast(number as varchar(4))) as SPJ
results
10,11,8,9
我做错了什么?
最佳答案
由于类型的原因,这一切都很复杂——字符串的排序方式与数字不同。因此,您可以改用数组来执行此操作:
with t as (
select num
from (values (1), (10), (11), (12), (29), (2)) v(num)
)
select array_to_string(array_agg(distinct num order by num), ', ')
from t ;
关于sql - 如何使用 string_agg 对转换后的字段进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52150351/