【发布时间】:2013-01-30 02:35:45
【问题描述】:
我有一个自定义聚合函数,它使用分隔符连接项目。 如何调用此函数以确保结果是排序列表。
像 sum() 这样的聚合函数无论以何种顺序提供给它的行都将具有相同的结果。
我无法轻松地对聚合函数本身中的项目进行排序,因为排序顺序取决于不同的字段。
例如:
product|size_id | size_string
--------------------------------
prod1 |10 | x-small
prod1 |20 | small
prod1 |30 | medium
prod1 |40 | large
prod1 |50 | x-large
我想返回一个查询:
prod1,适用于: x-小,小,中,大,x-大
即按 (size_id) 顺序连接的尺寸
SELECT product,concat_agg(size_string) GROUP BY product;
将返回所需的数据,但不按排序顺序。
目前我正在使用一个函数以正确的顺序循环显示大小并将它们添加到结果中。我怀疑可能有一种 SQL 方法可以让子查询产生所需的结果。必须有其他不可交换的聚合函数。
【问题讨论】: