今天看见一个帖子是这样描述的
oracle中有一表tab
no name
1 a
2 b
3 c
4 d
你写一条sql语句显示以下结果
ab ac ad bc bd cd
答案:
create table test1(no number,name varchar2(20));
insert into values(1,'a');
......................
......................
思路是这样的
首先:这个肯定是自表连接的了
因为
1 a 2 b
1 a 3 c
1 a 4 d
2 b 3 c
2 b 4 d
3 c 4 d
t1.no < t2.no
现在可以做行列转换了
思路是根据 decode
从 res 集合中 取出A 列的数据 每次取一个然后把取出的值放入每一个decode()算一个值,最后都算完max()
取出ab 然后decode 后 t1 下就是 ab,t2下就是null,t3-t7都是null
取出ac 然后decode 后 t1 是null t2下是bc,t3-t7都是null
以此类推 最后每列都运行Max函数