oracle 横向分区,请教怎么把这纵向的数据转成横向呀

SQL codeSELECT LEVEL,

REGEXP_SUBSTR

('first,second,third',

'[^,]*',

NVL (REGEXP_INSTR ('first,second,third',

',',

1,

DECODE (LEVEL - 1,

0, NULL,

LEVEL - 1

)

),

0

)

+ 1

) split_result

FROM DUAL

CONNECT BY NVL (REGEXP_INSTR ('first,second,third',

',',

1,

DECODE (LEVEL - 1, 0, NULL, LEVEL - 1)

),

1

) > 0

------解决方案--------------------SQL codewith tb1 as(

select 61520528 id,12 classid,0 a,0 b,0 c from dual union all

select 61520528 id,13 classid,0 a,0 b,0 c from dual union all

select 61520528 id,14 classid,1 a,1 b,5 c from dual

)

select id,

max(decode(classid,12,a,0)) a12,max(decode(classid,12,b,0)) b12,max(decode(classid,12,c,0)) c12,

max(decode(classid,13,a,0)) a13,max(decode(classid,13,b,0)) b13,max(decode(classid,13,c,0)) c13,

max(decode(classid,14,a,0)) a14,max(decode(classid,14,b,0)) b14,max(decode(classid,14,c,0)) c14

from tb1

group by id;

ID A12 B12 C12 A13 B13 C13 A14 B14 C14

---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------

61520528 0 0 0 0 0 0 1 1 5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值