我的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#的回复(以前自己回复的)

 

posted @ 2017-02-14 16:26  達人  阅读(91)  评论(0编辑  收藏  举报