Ich habe einen Tisch:
CREATE TABLE tblproducts
(
productid integer,
product character varying(20)
)
Mit den Zeilen:
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');
Wenn ich string_agg()
am ausführe tblproducts
:
SELECT string_agg(product, ' | ') FROM "tblproducts"
Es wird das folgende Ergebnis zurückgegeben:
CANDID POWDER 50 GM | ESOZ D 20 MG CAP | HHDERM CREAM 10 GM | CREAM 15 GM | KZ LOTION 50 ML | BUDECORT 200 Rotocap
Wie kann ich die aggregierte Zeichenfolge in der Reihenfolge sortieren, in der ich sie verwenden würde ORDER BY product
?
Ich verwende PostgreSQL 9.2.4.
sql
postgresql
string-aggregation
Vivek S.
quelle
quelle
string_agg
in der Dokumentation führt Sie nicht dorthin.https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-2017
quelle
WITHIN GROUP
Klausel gilt nicht für diestring_agg
Funktion, wie dies bei Microsoft SQL der Fall ist.SQL FIDDLE
quelle
ORDER BY
Klausel in die Unterabfrage aufnehmen, werdenFROM
die Daten in der Klausel nicht unbedingt in der richtigen Reihenfolge angezeigt. Wenn das funktioniert, ist es reines Glück.Ich suchte nach der gleichen Lösung für SQL Server und fand die folgende Lösung
quelle