我的oracle生涯(5)行列转换基础

原数据:

ID    C1    C2     C3 ..

1  V11   V12    V13

2  V12   V22 NULL

3  V13   NULL V33

4    NULL V24    V34

。。。。。。

方式一:UNION ALL

select id ,'C1' CN,C1 CV FROM TABLE

UNION ALL

select id ,'C2' CN,C2 CV FROM TABLE

UNION ALL

select id ,'C3' CN,C3 CV FROM TABLE

......

结果:

id   CN    CV

1    C1    V11

2    C1    V12

3 C1    V13

4 C1     NULL

......

方式二:MODEL

select id,cn,cv from A

MODEL          //  model 查询开始

RETURN UPDATED ROWS //  返回被更新了的列

PARTITION BY (id)     //  查询的逻辑块(用id分区)

DIMENSION BY (0 AS n)   //  一维  ( a as y,b as z   二维)

MEASURES("XX" AS CN,'YY' AS CV,C1,C2,C3) // 定义要被运算操作的列

RULES()                  // 定义运算规则

ORDERBY ID,CN;

结果:

ID    CN   CV

1   C1    V11

1   C2    V21

1      C3    V31

2      C1     ...

...

具体例子请查看

http://www.itpub.net/thread-1887787-1-1.html    的问题以及15#的回复(以前自己回复的)

 

转载于:https://www.cnblogs.com/reyalPDC/p/6398199.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值