Как отсортировать результат из строки agg()
у меня есть таблица:
CREATE TABLE tblproducts
(
productid integer,
product character varying(20)
)
со строк:
INSERT INTO tblproducts(productid, product) VALUES (1, 'CANDID POWDER 50 GM');
INSERT INTO tblproducts(productid, product) VALUES (2, 'SINAREST P SYP 100 ML');
INSERT INTO tblproducts(productid, product) VALUES (3, 'ESOZ D 20 MG CAP');
INSERT INTO tblproducts(productid, product) VALUES (4, 'HHDERM CREAM 10 GM');
INSERT INTO tblproducts(productid, product) VALUES (5, 'CREAM 15 GM');
INSERT INTO tblproducts(productid, product) VALUES (6, 'KZ LOTION 50 ML');
INSERT INTO tblproducts(productid, product) VALUES (7, 'BUDECORT 200 Rotocap');
если я выполнить string_agg()
on tblproducts
:
SELECT string_agg(product, ' | ') FROM "tblproducts"
он вернет следующий результат:
CANDID POWDER 50 GM | ESOZ D 20 MG CAP | HHDERM CREAM 10 GM | CREAM 15 GM | KZ LOTION 50 ML | BUDECORT 200 Rotocap
как я могу отсортировать агрегированную строку, в том порядке, в котором я бы использовал ORDER BY product
?
Я использую PostgreSQL 9.2.4.
2 ответа:
с postgres 9.0+ вы можете написать:
select string_agg(product,' | ' order by product) from "tblproducts"
подробности здесь: http://www.postgresql.org/docs/current/static/sql-expressions.html#SYNTAX-AGGREGATES