Oracle 列变行使用pivot函数

对于学生成绩单表,需要按照年度展现每个学生的成绩趋势

需求:

展示趋势图1,姓名,学科,2022年成绩,2023年成绩,2024年成绩

展示趋势图2,姓名,2022年平均成绩,2023年平均成绩,2024年平均成绩

当然可以查到数据内存按照姓名学科拼接,但是其实Oracle提供了pivot可以直接实现查询出来就已经列转行。

【格式】:pivot(聚合函数 for 需要转为列的字段名 in(需要转为列的字段值))

【说明】:实现将指定字段的字段值转换为列的效果。

按照名称,科目显示指定年度的得分,此时转换的列明是年度,值是df,等于name,class,nd分组,展示df,所以仅有一个值,用sum,avg,都是只展示一个值

展示趋势图2,姓名,2022年平均成绩,2023年平均成绩,2024年平均成绩,这时候汇总的字段是name,df取平均值,nd列转行,使用select anme ,nd,df from temp 查询结果如下,在这个sql下直接用pivot报错,改写为select * 没有问题,应该是pivot不支持上面的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值