Saya punya meja:
CREATE TABLE tblproducts
(
productid integer,
product character varying(20)
)
Dengan baris:
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');
Jika saya mengeksekusi string_agg()
pada tblproducts
:
SELECT string_agg(product, ' | ') FROM "tblproducts"
Ini akan mengembalikan hasil sebagai berikut:
CANDID POWDER 50 GM | ESOZ D 20 MG CAP | HHDERM CREAM 10 GM | CREAM 15 GM | KZ LOTION 50 ML | BUDECORT 200 Rotocap
Bagaimana saya bisa mengurutkan string agregat, dalam urutan yang akan saya gunakan ORDER BY product
?
Saya menggunakan PostgreSQL 9.2.4.
sql
postgresql
string-aggregation
Vivek S.
sumber
sumber
string_agg
di dokumentasi tidak membawa Anda ke sana.https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017
SELECT STRING_AGG(prod, '|') WITHIN GROUP (ORDER BY product) FROM ...
sumber
WITHIN GROUP
klausul tidak berlaku untukstring_agg
fungsi, seperti halnya dengan Microsoft SQL.select string_agg(prod,' | ') FROM (SELECT product as prod FROM tblproducts ORDER BY product )MAIN;
SQL FIDDLE
sumber
ORDER BY
klausa dalam sub kueri,FROM
klausa tersebut tidak selalu mendapatkan data secara berurutan. Jika ini berhasil, itu murni keberuntungan.