我正在自动执行一个工作流程,在该流程中,除了数字(文本类型)之外,输出还需要按照名称(internal_product,文本类型)的特定非字母顺序排列。首先,我运行一个子查询,其中我使用联接从四个略有不同的表中收集信息。然后,在外部union
求和单位和金额之前,将结果附加group by
。伪查询如下:
select name, number, internal_product, sum(units), sum(amount) from (
select fields, sum(x)
from t1
join join-conditions
join join-conditions
group by name, number, internal_product
union
.....
select fields, sum(x)
from t5
join join-conditions
join join-conditions
group by name, number, internal_product
) as foo
group by name, number, internal_product
order by number, name;
我尝试将在一个联接中使用的帮助器表中的列更改为enum
类型,因为它在外部group by
(SO-thread)中使用,但该列类型当然,连接条件必须相同,因此修改后的查询无效。产品名称共有30种,因此我想避免使用gbn和Guffa建议的CASE name
。
还有其他方法可以在order by
中应用特定顺序吗?
答案 0 :(得分:1)
对于您的情况而言,这可能是矫kill过正或复杂的,但是您可以在postgres中创建自定义排序规则,以对所需的方式进行排序。看一下文档。 https://www.postgresql.org/docs/11/collation.html