数据人员Sql必会列转行
列转行上一篇博客已经介绍过了。
下面介绍一下行转列的实现
假设我们有一个数据表:
CREATE TABLE row_to_line ( user_name character varying(30) NOT NULL, -- 学生名称 yingyu integer, -- 得分 yuwen integer, huaxue integer, wuli integer, CONSTRAINT row_to_line_pkey PRIMARY KEY (user_name) ); insert into row_to_line select 'liqiu', 80, 90, 90, 89; insert into row_to_line select 'lingling', 89, 99, 100, 90; insert into row_to_line select 'xingxing', 90, 94, 97, 99;
显示如下:
那么我们想要将它转化为一列列的如下结果输出:
那么如何做到哪?
方法一、简单可读性强:
select a.user_name, a.title, a.score from ( (select user_name, yingyu as "score", 'yingyu' as title from row_to_line) union (select user_name, yuwen as "score", 'yuwen' as title from row_to_line) union (select user_name, huaxue as "score", 'huaxue' as title from row_to_line) union (select user_name, wuli as "score", 'wuli' as title from row_to_line) ) a order by a.user_name, a.title
方法二、快速
这是pg的专有方法
select * from tmp.dim_values_20170821 limit 10
select lower(regexp_split_to_table(dim_values, ' ')) as dim_name, table_name,all_num from tmp.dim_values_20170821 where table_name = '景区统计表'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2013-11-01 JAVA统计中文的个数
2013-11-01 JAVA 正则表达式