3 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
使用聚合函數(shù)string_agg()(Postgres 9.0或更高版本)更簡(jiǎn)單:
SELECT movie, string_agg(actor, ', ') AS actor_list
FROM tbl
GROUP BY 1;
在這種情況下,1in GROUP BY 1是位置參考和快捷方式GROUP BY movie。
string_agg()期望數(shù)據(jù)類型text作為輸入。其他類型需要顯式轉(zhuǎn)換(actor::text) - 除非到隱式轉(zhuǎn)換text的定義-這是所有其他字符類型(的情況下varchar,character,"char"),和一些其他類型。
正如isapir所說,您可以O(shè)RDER BY在聚合調(diào)用中添加一個(gè)子句以獲取排序列表-如果需要的話。喜歡:
SELECT movie, string_agg(actor, ', ' ORDER BY actor) AS actor_list
FROM tbl
GROUP BY 1;

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用array_agg函數(shù):
SELECT "Movie",
array_to_string(array_agg(distinct "Actor"),',') AS Actor
FROM Table1
GROUP BY "Movie";
結(jié)果:
| MOVIE | ACTOR |
-----------------
|? ? ?A | 1,2,3 |
|? ? ?B |? ? ?4 |
看到這個(gè)SQLFiddle
添加回答
舉報(bào)