[sql] string_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()하면 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를 사용하고 있습니다.



답변

postgres 9.0 이상에서는 다음과 같이 작성할 수 있습니다.

select string_agg(product,' | ' order by product) from "tblproducts"

자세한 내용은 여기 .


답변

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 ...


답변

select string_agg(prod,' | ') FROM
  (SELECT product as prod FROM tblproducts ORDER BY product )MAIN;

SQL FIDDLE


답변