【发布时间】:2019-08-08 22:38:06
【问题描述】:
我正在自动化一个工作流程,其中输出需要按照特定的非字母顺序排列,具体取决于名称(internal_product,类型文本)以及数字(类型文本)。首先,我正在运行一个子查询,在其中我使用连接从四个略有不同的表中收集信息。然后,我在外部group by 对单位和金额求和之前附加union 的结果。伪查询如下:
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 中应用特定顺序吗?
【问题讨论】:
-
你应该提供更多关于你想要排序的值以及它们应该如何排序的信息。如果没有更多信息,CASE 语句是按特定值对项目进行排序的一般规则,但您可以创建一个字段,根据您的要求计算应按什么顺序排列,然后按此排序。
-
我最终使用了 CASE-WHEN。
标签: postgresql enums group-by sql-order-by