表T1
f1 f2 f3 f4 f5
-----------------------------------------------------
001 123 1 0
001 111 1 0
001 622 0 0
001 332 1 0
001 0 aaa 0
001 0 bbc 2
001 0 cbc 0
008 787 1 0
008 0 abc 0
008 0 uic 3
----------------------------------------------------将表T1转换成如下形式
f1 f2 f3 f4 f5
-----------------------------------------------------
001 123 1 aaa 0
001 111 1 bbc 2
001 622 0 cbc 0
001 332 1 0
008 787 1 abc 0
008 0 uic 3
----------------------------------------------------先谢谢各位了
f1 f2 f3 f4 f5
-----------------------------------------------------
001 123 1 0
001 111 1 0
001 622 0 0
001 332 1 0
001 0 aaa 0
001 0 bbc 2
001 0 cbc 0
008 787 1 0
008 0 abc 0
008 0 uic 3
----------------------------------------------------将表T1转换成如下形式
f1 f2 f3 f4 f5
-----------------------------------------------------
001 123 1 aaa 0
001 111 1 bbc 2
001 622 0 cbc 0
001 332 1 0
008 787 1 abc 0
008 0 uic 3
----------------------------------------------------先谢谢各位了
解决方案 »
- select into 怎么有问题?
- 咨询下表重命名的问题
- 对于存储了很大量数据的数据库,如何进行备份策略?
- 请问创建物化视图时,如何才能够不产生日志
- 实在难以解决的乱码问题,看了不少方法,均不行,寻求高手帮助!能解决问题的,可以另外赠分100!
- 散分,求pl/sql建表语法
- 初学oracle不知道如何创建数据库,请指教
- 高手!!oracle中是否有像Ms Sqlserver中的生成Sql语句的工具,在那里找到??
- 使用pl/sql developer可以定期执行sql脚本并讲结果自动写入另一个表中吗?
- 请教:如何通过pl/sql存储过程实现:删除一个表的两个索引,然后再重建它们
- Oracle中Clob类型转换问题 ·_·! (很急!)
- 【求助】【急】关于Oracle10g里的Order by速度慢的问题
表T1
f1 f2 f3 f4 f5
-----------------------------------------------------
001 123 1 null 0
001 111 1 null 0
001 622 0 null 0
001 332 1 null 0
001 null 0 aaa 0
001 null 0 bbc 2
001 null 0 cbc 0
008 787 1 null 0
008 null 0 abc 0
008 null 0 uic 3
----------------------------------------------------将表T1转换成如下形式
f1 f2 f3 f4 f5
-----------------------------------------------------
001 123 1 aaa 0
001 111 1 bbc 2
001 622 0 cbc 0
001 332 1 null 0
008 787 1 abc 0
008 null 0 uic 3
----------------------------------------------------先谢谢各位了
SELECT '001' F1, '123' F2, 1 F3, NULL F4, 0 F5 FROM DUAL UNION ALL
SELECT '001', '111', 1, NULL, 0 FROM DUAL UNION ALL
SELECT '001', '622', 0, NULL, 0 FROM DUAL UNION ALL
SELECT '001', '332', 1, NULL, 0 FROM DUAL UNION ALL
SELECT '001', NULL, 0, 'aaa', 0 FROM DUAL UNION ALL
SELECT '001', NULL, 0, 'bbc', 2 FROM DUAL UNION ALL
SELECT '001', NULL, 0, 'cbc', 0 FROM DUAL UNION ALL
SELECT '008', '787', 1, NULL, 0 FROM DUAL UNION ALL
SELECT '008', NULL, 0, 'abc', 0 FROM DUAL UNION ALL
SELECT '008', NULL, 0, 'uic', 3 FROM DUAL
)
,T2 AS(SELECT t1.*,Row_Number()over(PARTITION BY f1 ORDER BY f1)rn FROM T1 WHERE F2 IS NOT NULL)
,T3 AS(SELECT t1.*,Row_Number()over(PARTITION BY f1 ORDER BY f1)rn FROM T1 WHERE F4 IS NOT NULL)
SELECT Nvl(a.f1,b.f1) f1,Nvl(a.f2,b.f2) f2,Nvl(a.f3,0) f3,Nvl(b.f4,a.f4) f4,Nvl(b.f5,a.f5) f5
FROM t2 a full outer join t3 b
on a.rn=b.rn AND a.f1=b.f1
ORDER BY a.f1;
结果:
F1 F2 F3 F4 F5
---------------------------
001 123 1 aaa 0
001 111 1 bbc 2
001 622 0 cbc 0
001 332 1 0
008 787 1 abc 0
008 0 uic 3
结果不变!