Oracle行转列,列转行使用实例

-----1.行转换为列

select a.fworkcenter as 车间,F1||'-数量' as 类型, fspec as 规格 ,ftype as 前缀

, to_char(fdate,'YYYY-MM-dd') as 日期, (case when a.fcode in (900,901) then to_char(fcount,'fm90.990') else cast(fcount as varchar(20)) end) 值 ,

a.fname,a.f2 as 厚度

from avg_resistance a

where 1=1 and a.fdate>=:STARTDATE and a.fdate<=:ENDDATE and length(a.ftype)=5 )t --and a.f1='天'

pivot ( max( 值 ) ----随便给个函数即可

for fname in

(

'合计' as "合计",

'电阻(<0.2)' as "电阻(小于0。2)",

'电阻(0.2,0.3)' as "电阻(0。2,0。3)",

'电阻(0.3,0.4)' as "电阻(0。3,0。4)",

'均值' as "均值"

) )

where 1=1 ;

-----2.列行转换

select *

from ( select a.containername,

(case when nvl(a.苹果,0)>0 then 苹果else 0 end ) as 苹果

(case when nvl(a.雪梨,0)>0 then 雪梨 else 0 end ) as 雪梨

(case when nvl(a.香蕉,0)>0 then 香蕉 else 0 end ) as 香蕉,

(case when nvl(a.龙眼,0)>0 then 龙眼 else 0 end ) as 龙眼,

a.cuworkorder

from cucontainergraderrecord a

where a.recordtime>=to_date('2023-10-01','yyyy-mm-dd')

and a.containername like 'Z%'

and a.specname='分选')t

unpivot

(

fcount ---(原表的列对应的值)

for fitem ----(原表列名称,多少列,就变多少行, oracle的直接用列名称,不用',''等)

in ( 苹果,雪梨,香蕉,龙眼

)

)

相关推荐
weixin_5318042436 分钟前
SQL优化技巧(如查询优化、索引优化)。分布式系统的基本概念及挑战(如数据一致性、服务发现、负载均衡)
数据库·sql·服务发现
一 乐1 小时前
考研论坛平台|考研论坛小程序系统|基于java和微信小程序的考研论坛平台小程序设计与实现(源码+数据库+文档)
java·数据库·学习·考研·微信·小程序·源码
一 乐1 小时前
租拼车平台|小区租拼车管理|基于java的小区租拼车管理信息系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·微信·notepad++·拼车
BillDev1 小时前
Oracle创建用户报错-ORA-65096: invalid common user or role name
数据库·oracle
szial2 小时前
深入理解SQL模糊查询中的特殊字符处理——以DB2为例
数据库·sql
jxxchallenger2 小时前
踩坑spring cloud gateway /actuator/gateway/refresh不生效
java·数据库·gateway
肥or胖2 小时前
【MySQL】索引
linux·数据库·mysql
Kiwi233332 小时前
产品经理-需求分析
数据库·产品经理·需求分析
读心悦3 小时前
修改 MySQL 数据库中的唯一键
数据库·mysql
qq_213157893 小时前
(c#)unity中sqlite多线程同时开启事务会导致非常慢
数据库·sqlite·c#