表结构: tableTest
字段: F_a,F_b,F_c
F_c的值只有两个,'F'和'S'当表中多条记录的F_a和F_b 相同时,分别做如下处理:
如果记录中同时有'F'和'S'的数据时,删除'F'的记录,留下'S'的记录;
如果记录中只有'S'的数据时,只留下1条'S' 的数据,其他删除.SQL
字段: F_a,F_b,F_c
F_c的值只有两个,'F'和'S'当表中多条记录的F_a和F_b 相同时,分别做如下处理:
如果记录中同时有'F'和'S'的数据时,删除'F'的记录,留下'S'的记录;
如果记录中只有'S'的数据时,只留下1条'S' 的数据,其他删除.SQL
解决方案 »
- linux之sendmail
- 疑惑我已经结贴的一个问题
- to_char问题,格式化金额成千分位。(例如:将89898.98格式化成89,898.98)
- 改变操作系统,ORACLE数据库是否出现问题
- 如何将字符型转换为整数型?
- 高分求助:在solaris10下如何安装、配置以及使用oracle8i?等答案~谢谢~~
- 很莱的问题
- 我的数据库为什么在服务里启动了,但使用还要以DBA身份进去把事例启动
- 请教高手:在linux下用pro*c开发连接oracle的程序,要安装什么开发包啊?
- 是不是xp不能装oracle啊,,我下载了好几次oracle8,准备安装的过程都出错,
- Oracle Date自动转型的问题
- Environment variable ORACLE_UNQNAME not defined.
(select f_a,f_b,f_c,row_number()over(partition by f_a,f_b order by f_c desc) rn from tableTest)
select * from tt whre rn=1;
--如果记录中同时有'F'和'S'的数据时,删除'F'的记录,留下'S'的记录;
--如果记录中只有'S'的数据时,只留下1条'S' 的数据,其他删除.
delete from tableTest t
where exists (
select 1 from (select t1.rowid,
row_number() over(partition by t1.F_a,t1.F_b order by t1.F_c desc)row_num
from tableTest t1) t2
where t2.row_num>1 and t2.rowid = t.rowid;
where rowid <> (select rowid
from (select t1.rowid,
f_c,
f_a,
f_b,
row_number() over(partition by t1.F_a, t1.F_b order by t1.F_c desc) row_num
from TEST t1) t2
where t.f_a = t2.f_a
and t.f_b = t2.f_b
and t2.row_num = 1)