如何对转换后的字段进行排序。有类似的问题,但是我不知道为什么它对我不起作用
-“数字”字段是整数
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
我在做什么错了?
答案 0 :(得分:3)
由于类型的原因,这一切都很复杂-字符串的排序方式与数字不同。因此,您可以使用数组来代替:
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 ;