J'ai une table:
CREATE TABLE tblproducts
(
productid integer,
product character varying(20)
)
Avec les rangées:
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');
Si j'exécute string_agg()
sur tblproducts
:
SELECT string_agg(product, ' | ') FROM "tblproducts"
Il renverra le résultat suivant:
CANDID POWDER 50 GM | ESOZ D 20 MG CAP | HHDERM CREAM 10 GM | CREAM 15 GM | KZ LOTION 50 ML | BUDECORT 200 Rotocap
Comment puis-je trier la chaîne agrégée, dans l'ordre que j'utiliserais ORDER BY product
?
J'utilise PostgreSQL 9.2.4.
sql
postgresql
string-aggregation
Vivek S.
la source
la source
string_agg
dans la documentation ne vous y mène pas.https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017
la source
WITHIN GROUP
clause ne s'applique pas à lastring_agg
fonction, comme elle le fait avec Microsoft SQL.SQL FIDDLE
la source
ORDER BY
clause dans la sous-requête, laFROM
clause ne met pas nécessairement les données dans l'ordre. Si cela fonctionne, c'est de la pure chance.Je cherchais la même solution pour SQL SERVER et j'ai trouvé la solution ci-dessous
la source