表结构如下
ID EVT_OBJECT glh_ID xc begin_dt end_dt JG
1 1000.001 AAAA Y 2005-10-11 2005-11-11 1
2 1000.001 AAAA M 2005-10-10 2005-11-10 1
3 1000.001 AAAA W 2005-10-11 2005-11-11 7
4 1000.001 BBBB Y 2005-10-10 2005-11-10 1去掉重复记录,条件如下:
1,如果glh_id相同,取xc=Y(Y>M>W>D)记录,如果xc相同,取begin_dt大的记录,
2,如果glh_id不相同,比较xc的大小(Y>M>W>D),如果xc相同,取begin_dt大的记录。
3,按条件上面记录最后留下ID=1的记录,其它记录都得删除了。
ID EVT_OBJECT glh_ID xc begin_dt end_dt JG
1 1000.001 AAAA Y 2005-10-11 2005-11-11 1
2 1000.001 AAAA M 2005-10-10 2005-11-10 1
3 1000.001 AAAA W 2005-10-11 2005-11-11 7
4 1000.001 BBBB Y 2005-10-10 2005-11-10 1去掉重复记录,条件如下:
1,如果glh_id相同,取xc=Y(Y>M>W>D)记录,如果xc相同,取begin_dt大的记录,
2,如果glh_id不相同,比较xc的大小(Y>M>W>D),如果xc相同,取begin_dt大的记录。
3,按条件上面记录最后留下ID=1的记录,其它记录都得删除了。
解决方案 »
- 数据库连接问题
- 请教oracle文件的问题
- 在线急等:求一段时间序列查询SQL语句,大侠们进来帮忙解决解决了
- 在存储过程中,如何对计算公式类的字符串解析?
- 提示错误:PLS_00302:Component 'Create_wrapped' must be declared
- 在存储过程中用dbms_output.put_line()怎么打印不出结果?
- 求pro*c/c++资料
- 请教一个sql语句的写法。100分
- ORACLE导入失败---导致ORACLE不能用的问题。
- 关于job-任务相关问题.请执教
- 部门经理想把运营,计费的数据库平台换成MYSQL,我需要充分的理由来否定!
- 求一个SQL语句,感觉比较复杂
a.*
from
表 a
where
not exists(select 1
from 表
where
glh_ID<>a.glh_ID
and
decode(xc,'Y',4,'M',3,'W',2,'D',1)>decode(a.xc,'Y',4,'M',3,'W',2,'D',1)
or
(decode(xc,'Y',4,'M',3,'W',2,'D',1)=decode(a.xc,'Y',4,'M',3,'W',2,'D',1) and begin_dt>a.begin_dt))
and
not exists(select 1
from 表
where
glh_ID= a.glh_ID
and
decode(xc,'Y',4,'M',3,'W',2,'D',1)>decode(a.xc,'Y',4,'M',3,'W',2,'D',1)
or
(decode(xc,'Y',4,'M',3,'W',2,'D',1)=decode(a.xc,'Y',4,'M',3,'W',2,'D',1) and begin_dt>a.begin_dt))
-----------------------------------------------------------------------------------------------------------------
delete from 表 a
where
exists(select 1
from 表
where
glh_ID<>a.glh_ID
and
decode(xc,'Y',4,'M',3,'W',2,'D',1)>decode(a.xc,'Y',4,'M',3,'W',2,'D',1)
or
(decode(xc,'Y',4,'M',3,'W',2,'D',1)=decode(a.xc,'Y',4,'M',3,'W',2,'D',1) and begin_dt>a.begin_dt))
or
exists(select 1
from 表
where
glh_ID= a.glh_ID
and
decode(xc,'Y',4,'M',3,'W',2,'D',1)>decode(a.xc,'Y',4,'M',3,'W',2,'D',1)
or
(decode(xc,'Y',4,'M',3,'W',2,'D',1)=decode(a.xc,'Y',4,'M',3,'W',2,'D',1) and begin_dt>a.begin_dt))