這篇文章將為大家詳細講解有關PostgreSQL行轉列的方法,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
目前創新互聯建站已為上千多家的企業提供了網站建設、域名、虛擬空間、網站運營、企業網站設計、花溪網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
PostgreSQL如何行轉列
方法一:group by + sum + case when
select name, sum(case when zbfm='年齡' then value else 0 end) as 年齡, sum(case when zbfm='身高' then value else 0 end) as 身高, sum(case when zbfm='體重' then value else 0 end) as 體重 from test group by name having name like '%1' and length(name)=4 order by 年齡 desc


方法二:用postgresql的crosstab交叉函數
推薦:postgresql教程
crosstab(unknown, unknown) does not exist
select * from
crosstab(
'select name,zbfm,value from test where name like ''%1'' and length(name)=4',$$values('年齡'), ('身高'), ('體重')$$)
as score(name text, 年齡 int, 身高 int, 體重 int)
order by 年齡 desc

方法三:group by + string_agg + split_part(分組,行轉列,字符切割)
select name, split_part(split_part(temp,',',1),':',2) as 年齡, split_part(split_part(temp,',',2),':',2) as 身高, split_part(split_part(temp,',',3),':',2) as 體重 from( select name, string_agg(zbfm||':'||value,',') as temp from test group by name having name like '%1' and length(name)=4 ) as t order by 年齡 desc


group by + string_agg
select name, string_agg(zbfm||':'||value,',') from test group by name having name like '%1' and length(name)=4

關于PostgreSQL行轉列的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
網頁名稱:PostgreSQL行轉列的方法
地址分享:http://www.yijiale78.com/article48/ghdchp.html
成都網站建設公司_創新互聯,為您提供關鍵詞優化、、企業建站、網站內鏈、商城網站、企業網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯