第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將一列的多個結果行合并為一個,并按另一列分組

將一列的多個結果行合并為一個,并按另一列分組

天涯盡頭無女友 2019-12-16 09:57:29
我有這樣的桌子Movie   Actor     A       1  A       2  A       3  B       4我想獲取電影的名稱以及該電影中的所有演員,并且我希望結果的格式如下:Movie   ActorList A       1, 2, 3我該怎么做?將一列的多個結果行合并為一個,并按另一列分組
查看完整描述

3 回答

?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

使用聚合函數string_agg()(Postgres 9.0或更高版本)更簡單:


SELECT movie, string_agg(actor, ', ') AS actor_list

FROM   tbl

GROUP  BY 1;

在這種情況下,1in GROUP BY 1是位置參考和快捷方式GROUP BY movie。


string_agg()期望數據類型text作為輸入。其他類型需要顯式轉換(actor::text) - 除非到隱式轉換text的定義-這是所有其他字符類型(的情況下varchar,character,"char"),和一些其他類型。


正如isapir所說,您可以ORDER BY在聚合調用中添加一個子句以獲取排序列表-如果需要的話。喜歡:


SELECT movie, string_agg(actor, ', ' ORDER BY actor) AS actor_list

FROM   tbl

GROUP  BY 1;


查看完整回答
反對 回復 2019-12-16
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

您可以使用array_agg函數:


SELECT "Movie",

array_to_string(array_agg(distinct "Actor"),',') AS Actor

FROM Table1

GROUP BY "Movie";

結果:


| MOVIE | ACTOR |

-----------------

|? ? ?A | 1,2,3 |

|? ? ?B |? ? ?4 |

看到這個SQLFiddle



查看完整回答
反對 回復 2019-12-16
  • 3 回答
  • 0 關注
  • 818 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號