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 (  苹果,雪梨,香蕉,龙眼
  )
  
  )
 

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值