当前位置:网站首页>oralce 处理列转行的三种方式 最后生成表格样式数据
oralce 处理列转行的三种方式 最后生成表格样式数据
2022-06-12 03:17:00 【紫薯馍馍】
【背景】
项目需要把数据库里面查询结果提取到表格里面来,区别日常的数据提取,本次数据表格样式复杂一些,因为涉及到收视人数、次数的问题,处理起来多费了一些时间,大概需求就是下面这样子

数据表的查询结果是下面这个样子:

看上去感觉很简单,但是之前没接触过,拿到这个需求是一头雾水的。
看看解决后的效果吧

【解决】
网上了解到了有三种解决方法,借用别人的例子,简单记录一下。
| name | subject | socre |
| 小米 | 语文 | 90 |
| 小米 | 数学 | 100 |
需要转换成:
| name | 语文 | 数学 |
| 小米 | 90 | 100 |
方法一 使用DECODE 函数,
这个方法plsql可以直接实现,但是我用jdbc无法实现,一直提示decode方法的计数方法有问题,不得不换一种,在解决过程中发现如果查询结果没有数据的时候,就会返回空,plsql这边没问题,但是在jdbc接收值的时候可能会报错,所以在查询的时候 每一列外面套用一个nvl()函数,可以解决这个返回值为空的问题。
SELECT
NAME,
SUM( DECODE(SUBJCT, "语文", SCORE) ) AS “语文”,
SUM( DECODE(SUBJCT, "数学", SCORE) ) AS “数学”
FROM
T_STUDENT_SOCRE
GROUP BY
NAME方法二、使用CASE WHEN
最终我是采用这个方式实现需求的,虽然列字段确实很多,但是一劳永逸还是可以试试
SELECT
NAME,
SUM( CASE SUBJECT WHEN "语文" THEN E_VALUE ELSE 0 END ) AS “语文”,
SUM( CASE SUBJECT WHEN "数学" THEN E_VALUE ELSE 0 END ) AS “数学”
FROM
T_STUDENT_SOCRE
GROUP BY
NAME方法三、使用的是PRVOT函数
这个方法我没使用成功,而且没有吃透他的处理方式,所以暂时就不多做叙述了
SELECT
NAME
"语文",
“数学”
FROM
T_STUDENT_SOCRE
PRVOT(MAX(SOCRE) for SUBJECT in ("语文" as “语文“,”数学“ as "数学") )最后我是通过WEB页面来实现这个需求的,因为手动导出还是比较麻烦,这里又回顾了一下,写table标签行合并 列合并的知识,差不多就是这个样子

边栏推荐
- cupp字典生成工具(同类工具还有crunch)
- Oracle sequence
- 微信小程序項目實例——體質計算器
- Selection (046) - what is the output of the following code?
- AcrelCloud-6000安全用电云平台在某商业广场的应用
- [digital signal processing] correlation function (power signal | cross correlation function of power signal | autocorrelation function of power signal)
- I2C protocol overview
- Sparse tensor based point cloud attribute compression
- Machine learning - dimensionality reduction (data compression, data visualization)
- Requirements and business model innovation - Requirements 12 - process oriented modeling
猜你喜欢

ssh公钥登录失败报错:sign_and_send_pubkey: no mutual signature supported

C language array

Wechat applet project example - Fitness calculator

Application of ard3m motor protector in coal industry

Special information | liquor (Baijiu, beer, wine)

Drawcall, batches, setpasscall in unity3d

Unity3D中DrawCall、Batches、SetPassCall

Kubernetes affinity learning notes

I2C协议概述

Inverted string - two solutions
随机推荐
跨域有哪些解决方法?
[digital signal processing] correlation function (energy signal | cross correlation function of energy signal | autocorrelation function of energy signal)
Infinite loop judgment method;
Restful interface design specification [for reference only]
2020-12-17
Cupp dictionary generation tool (similar tools include crunch)
The unique path of leetcode topic resolution II
余压监控系统在高层民用建筑的应用
Demand and business model innovation - demand 9- prototype
JSON and XML pros and cons
微信小程序项目实例——双人五子棋
Summary -day11
Unique paths for leetcode topic resolution
2020-12-10
Go recursive infinite classification
[string] judge whether S2 is the rotation string of S1
微积分复习2
大整数的加与乘;
2020-12-17
For the first time, why not choose "pure medium platform" for byte beating data platform