数据行转列实例

Hive sql 行转列 Hive sql 行转列(简单与进阶用法,附业务场景) 阅读详情

    在系统开发中常常遇到进行数据的统计,并将数据行转列的情景,例如表中的表示。但是在数据库中呈现出来的数据往往是横行的样式。这就需要一个转换。转换的方式有两种方式。1.利用cross join去进行转换。2.利用case when函数去转换。

数据库查询出的结果:

张三170
李四90
王五180

需要数据行转列后的结果:
张三李四王五
17090180

需求:

DEMO中就是简单的统计学生的总成绩。将统计结果进行行转列显示。


需要的表和数据:

T_STUDENTINFO表

CREATE TABLE `T_STUDENTINFO` (
`STUDENTID`  varchar(16) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,
`STUDENTNAME`  varchar(32) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL ,
PRIMARY KEY (`STUDENTID`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=gbk COLLATE=gbk_chinese_ci
ROW_FORMAT=COMPACT
;

INSERT INTO `t_studentinfo` VALUES ('1001', '张三');
INSERT INTO `t_studentinfo` VALUES ('1002', '李四');
INSERT INTO `t_studentinfo` VALUES ('1003', '王五');


T_RESULTINFO表

CREATE TABLE `T_RESULTINFO` (
`ID`  varchar(16) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL ,
`RESULT`  varchar(32) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL ,
`STUDENTID`  varchar(16) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL 
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=gbk COLLATE=gbk_chinese_ci
ROW_FORMAT=COMPACT
;


INSERT INTO `t_resultinfo` VALUES ('1', '90', '1001');
INSERT INTO `t_resultinfo` VALUES ('2', '80', '1001');
INSERT INTO `t_resultinfo` VALUES ('3', '40', '1002');
INSERT INTO `t_resultinfo` VALUES ('4', '50', '1002');
INSERT INTO `t_resultinfo` VALUES ('5', '90', '1003');
INSERT INTO `t_resultinfo` VALUES ('6', '90', '1003');


1.利用cross join去进行转换。

利用cross join也可以实现,但是明显的要效率低一点,当增加需要统计的用户的时候需要再次增加查询语句。

select * from (
select sum(RESULT) as '张三' 
from t_studentinfo t join t_resultinfo r on t.STUDENTID=r.STUDENTID and t.STUDENTNAME='张三'
) a cross join
(
select sum(RESULT) as '李四' 
from t_studentinfo t join t_resultinfo r on t.STUDENTID=r.STUDENTID and t.STUDENTNAME='李四'
) b cross JOIN
(
select sum(RESULT) as '王五' 
from t_studentinfo t join t_resultinfo r on t.STUDENTID=r.STUDENTID and t.STUDENTNAME='王五'
) c  


2.利用case when函数去转换。

利用case when这种方式效率更高,sql也更便于理解。

select 
	sum(case when a.STUDENTNAME='张三' then b.RESULT end) as '张三',
	sum(case when studentname='李四' then result end) as '李四',
	sum(case when studentname='王五' then result end) as '王五'  
from t_studentinfo a join t_resultinfo b on a.STUDENTID=b.STUDENTID;

    总之,这两种方式都可以实现行转列,但是在真正的实战项目中可以需求的情况更复杂,这就需要知识的基础加上清晰的思路,其实往往数据统计都是这样的,每个知识点单独单拿出来,都会使用,但是怎么样把这些基础的东西运用到一起得到用户想要的数据,这才是我们需要考虑的问题,我觉得最主要的还是思路,找到简单的方法。

jQuery实现表格行转列 你可以从官方网站(https://jquery.com/)下载最新版本的jQuery,并将其引入到你的HTML文件中。在Web开发中,经常会遇到需要将表格的行转换为列的需求。本文将详细介绍如何使用jQuery将表格的行转换为列,并提供相应的源代码示例。每一列的标题现在成为了第一列的内容,而原来的行数据则被转换为了列数据。通过上述代码,我们成功地使用jQuery实现了将表格行转换为列的功能。你可以根据自己的需求修改代码和表格结构,以适应不同的场景和数据。获取当前列的标题,并将其作为新表格行的第一个单元格。 阅读详情

相关推荐

Oracle行转列技巧与实战指南.zip

行转列,或称为数据透视,是一种SQL操作,用于重新组织查询结果,将行形式的数据转换为列形式。这样可以简化数据分析和报告生成,尤其是在需要进行多维度分析时。SQL语句是数据库查询和数据操作的基石。一条标准的SQL语句通常包含以下几个部分:SELECT、FROM、WHERE、GROUP BY、HAVING 和 ORDER BY 等子句。其中SELECT和FROM是必须的,其余子句根据需要选择性使用。在上述结构中,SELECT用于指定要检索的列,FROM子句后面跟随要查询的表名,WHERE。

weixin_42388898的博客 752

dremio数据湖sql行列转换及转置

函数用于将数组或复杂类型的列(如JSON、Map或Array类型)中的值“炸裂”(分解)成多行.列并生成横向视图(即,包含引用 FROM 子句中它前面的其他表的相关性的内联视图)。将一组行连接成一个字符串列表,并在它们之间放置一个分隔符。将复合值分解为多行。FLATTEN 函数采用一。然而我们的初始数据可能是 带有分割符的。将提供的表达式聚合到一个数组中。表达式的数据类型 必须为。

qq_54725361的博客 1409

SQL中如何实现行转列,列转行的操作

SQL中如何实现行转列,列转行的操作.这里的例子保证让你豁然开朗!

行转列和列转行,经典案例解析

一、行转列 1、建表 create table table01( sname varchar2(10), --姓名 subject varchar2(10), --科目 score int --分数 ); 2、表中数据如下图显示 3、行转列转换代码 方式一(简单): select * from table01 pivot ( sum(score) for subject in ('语文','数学','英语') ); 方式二(麻烦): s...

下雨天看彩虹 3269

C# DataTable行转列

C# DataTable行转列 可能从数据库读出来的数据需要转换下行列来显示、在SQL里转换占用SQL资源 放在界面用C#转换可能更好 这是个简单的例子 原来显示: 年级 班级 人数 转换为: 年级 一班 二班 三班 合计

java行转列的例子

很通用的java行转列的例子,有些时候在数据库里面只有一个字段,在页面上显示成列

记HTML5 jquery JS 关于动态显示(行转列,转化后的表列固定,行不固定)JSON格式数值问题(前端样式写后台代码部分)

记HTML5 jquery JS 关于动态显示JSON格式数值问题(前端样式写后台代码部分) 一般数据通过AJAX方法获取到的都是JSON格式数据,而这样的数据在实际应用项目中一般为复杂数组形式,不是教科书那样的形式,所以需要先解析JSON格式数据。 $.ajax({ type: "POST", url: '../NewspaperWorker/SearchSAPVORNR', ...

记HTML5 JS jquery 关于给自画页面传值问题 669

数据显示由行变成列

对数据库查询出的数据进行由对应的行数据变为列数据

数据库技术之TRY CATCH 、行转列实例

一、TRY CATCH 目的:用来捕获异常和处理异常语句。 简单实例: 创建一个新的表t1 CREATE TABLE t1 ( c1 int PRIMARY KEY, C2 varchar(50) ) INSERT INTO t1 VALUES(1,'good');   --插入测试数据 BEGIN TRY  INSERT INTO t1 VALUE

LWT的专栏 1059

vscode中使用PlatformIO创建工程加载慢

解决使用VSCODE+PlatformIO中,第一次新建工程一直加载的问题

Reasally的博客 4979

Windows11 升级到24H2后,原本的protel99se软件的DDB图纸文件打不开解决办法

Windows11更新后无法打开DDB文件

xingchen2837的博客 423

R语言数据框行转列实例

目的:需要把数据框的行列进行转置 方法: # 原始数据框 > hrl_jd_mon     年份 一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月 1 2010年 51.2 45.8 55.8 62.9 63.8 59.5 80.5 78.0 66.0 92.3  50.80   55.6 2 2011年 54.8 54.4 64.1 78.5 64.5 63

我思,故我在!--My data life 4万+

ORCAD 层次化原理图使用TCL获取位号的方法

orcad tcl 获取occurrence位号的方法。

m0_46675718的博客 1132

mysql行转列小技巧

参考文章http://blog.youkuaiyun.com/u013938484/article/details/50552747,测试了一下很不错。 下面是具体的测试过程: 数据表结构: 采用经典的学生,课程,成绩表: CREATE TABLE `student` ( `stuid` VARCHAR(16) NOT NULL COMMENT '学号', `stunm` VARC

wulantian的专栏 2万+

Hindsight 内存爆炸 4 个词排查清单:9,284 条 6 成是 SSH 调试日志——Agent 标签系统的实战复盘

9,284 条记忆里 66% 是 SSH 调试日志。4 个标签被滥用=0 区分度。3 个 entity_labels + retain_mission + retain_every_n_turns 配置把噪声压回 5%——附 PATCH 脚本和实测前后数据。

Starry-SkyJing的博客 58

如何跑通SuperPoint+LightGlue的训练代码使用gluefactory进行训练和评估?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 1786

mysql行转列、列转行(含实例)

mysql行转列、列转行 1.行转列   有如图所示的表,现在希望查询的结果将行转成列(语文,数学,英文变成列):   使用如下查询语句实现行转列: select id,name, max(case when course = '语文' then score else 0 end) '语文' , max(case when course = '数学' then score else 0 ...

atu1111的博客 1773

基于分水岭分割进行肺癌诊断

近年来,肺癌的发病率和病死率均迅速上升,目前已居所有癌症之首。随着肺癌病人数量的增加,医生对肺部 CT 图像进行研判的工作量也增加了不少,在这种情况下难免工作效率降低甚至会出现误诊。为了帮助医生减少重复性工作,对肺部 CT 图像进行计算机辅助检测的技术就被广泛应用于对肺癌的诊断和治疗过程中。医学 CT 图像处理主要是研究医学图像中的器官和组织之间的关系,并进行病理性分析。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1568

pg库实现sql行转列

这个主题还是比较常见的,行转列主要适用于对数据作聚合统计,如统计某类目的商品在某个时间区间的销售情况。列转行问题同样也很常见。 group by + sum + case when实现行转列: SELECT A.ORG_ID, A.tv_type_count, A.tv_file_count, A.tv_date, CASE train_id WHEN '1' THEN 'ZHI' WHEN '2' THEN 'XING' WHEN '3' THEN 'SHI' W

永远热泪盈眶 坚持输出 8899

学Simulink--人形机器人控制场景实例:基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真

matlab编辑% 连杆长度 (m)% 躯干(髋到CoM)% 大腿% 小腿% 质量 (kg)% 转动惯量(绕质心,简化为杆)matlab编辑% 躯干CoM(假设在髋上方L_body/2处)% 左大腿CoM% 左小腿CoM% (右腿类似,略)本文完成了基于Simulink的多连杆人形机器人拉格朗日动力学建模仿真,实现了:✅ 定义7-DOF平面人形结构✅ 使用Symbolic Math Toolbox自动推导动力学方程✅ 生成。

amy_mhd的博客 398

【Davinci开发】:MPU(内存保护)

【Davinci开发】:MPU(内存保护)

2209
上一篇: Hibernate——三种状态的实例persistent演示
下一篇: Hibernate——多对一关联映射
YQAG
博客等级 码龄14年 112粉丝 120原创
评论 21
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值