按照你的意思是纵向记录转换为横向记录,也就是纵向表和横向表的相互转换吧。
这需要纵向表 Test 多增加一个附加的字段才行,这个字段用来描述纵向表中的记录应该
是横向表的第几个字段,以下是 SQL。
(我这里的转换还多需要一个字段才能转换,还请高手们指教有没有更好的方法直接就可以转换的。)
(另外,发帖子的时候,每行以空格打头的都给删掉了,影响了可读性)
create table test(
ID
varchar2(5),
a1
varchar2(5),
a2
varchar2(5),
a3
varchar2(5)
);
IDA1A2A3
----- ----- ----- -----
001 A B 1
001 C D 2
002 E F 1
002 G H 2
SQL> select
2ID,
3max( decode( a3, '1', a1, null ) ) a1,
4max( decode( a3, '1', a2, null ) ) a2,
5max( decode( a3, '2', a1, null ) ) a3,
6max( decode( a3, '2', a2, null ) ) a4
7from test
8group by ID;
IDA1A2A3A4
----- ----- ----- ----- -----
001 A B C D
002 E F G H