Eu tenho uma mesa:
CREATE TABLE tblproducts
(
productid integer,
product character varying(20)
)
Com as linhas:
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');
Se eu executar string_agg()
em tblproducts
:
SELECT string_agg(product, ' | ') FROM "tblproducts"
Ele retornará o seguinte resultado:
CANDID POWDER 50 GM | ESOZ D 20 MG CAP | HHDERM CREAM 10 GM | CREAM 15 GM | KZ LOTION 50 ML | BUDECORT 200 Rotocap
Como posso classificar a string agregada, na ordem que usaria ORDER BY product
?
Estou usando o PostgreSQL 9.2.4.
sql
postgresql
string-aggregation
Vivek S.
fonte
fonte
string_agg
na documentação não leva você lá.https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017
fonte
WITHIN GROUP
cláusula não se aplica àstring_agg
função, como acontece com o Microsoft SQL.SQL FIDDLE
fonte
ORDER BY
cláusula na subconsulta, aFROM
cláusula não necessariamente coloca os dados em ordem. Se funcionar, é pura sorte.Eu estava procurando a mesma solução para o SQL SERVER e encontrei a solução abaixo
fonte