2014-07-23 91 views
41

例如擺脫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'); 

這些都是tblproducts

    一些示例行
  • 如果我執行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

回答

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

SQL FIDDLE

+1

我有同樣的問題這是我的第一個想法,但不幸的是它不起作用(這使我在這裏),而伊戈爾的確如此。 – chbrown

+0

在我身邊,兩種方法(Ilesh's和Igor's)都在工作。 – Stephan