博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORACLE清除某一字段重复的数据(选取重复数据中另一个字段时期最大值)
阅读量:4708 次
发布时间:2019-06-10

本文共 1144 字,大约阅读时间需要 3 分钟。

需求:资产维修表中同一资产可能维修完继续申请维修,这时候维修状态需要根据最近的维修时间去判断维修状态,所以同一资产ID下会出现重复的数据(维修审批通过,维修审批未通过),或者可能不出现(未申请维修),所以需要查询资产维修表中未重复的数据和重复的数据中申请维修日期最近的数据,方法如下:

资产表如下:

1、资产维修中所有的数据

select * from ASSET_MAINTAIN t

结果如下:

2、资产维修中可能相同的数据

select a.*  from ASSET_MAINTAIN a inner join ASSET_MAINTAIN b on a.asset_id=b.asset_id and a.rowid!=b.rowid

结果如下:

3、查询相等的数据中保管日期最大的一条

select * from ASSET_MAINTAIN where maintain_start_date in (select max(n.maintain_start_date) from ASSET_MAINTAIN n group by n.asset_id having count(n.asset_id) > 1)

结果如下:

4、查询资产维修中所有的数据(不包括相同的数据)

select * from ASSET_MAINTAIN t where t.asset_id not in(select a.asset_id  from ASSET_MAINTAIN a inner join ASSET_MAINTAIN b on a.asset_id=b.asset_id and a.rowid!=b.rowid)

最后,将相同字段,不同数据的两个子查询相关联:

(select * from ASSET_MAINTAIN t where t.asset_id not in(select a.asset_id  from ASSET_MAINTAIN a inner join ASSET_MAINTAIN b on a.asset_id=b.asset_id and a.rowid!=b.rowid)) union all

(select * from ASSET_MAINTAIN where maintain_start_date in (select max(n.maintain_start_date) from ASSET_MAINTAIN n group by n.asset_id having count(n.asset_id) > 1))

结果如下:

转载于:https://www.cnblogs.com/zrui-xyu/p/4568322.html

你可能感兴趣的文章
php-Mysql示例1
查看>>
python第三方库requests学习笔记
查看>>
Oracle基本查询语言
查看>>
Word直接发表博客测试
查看>>
最短路模板
查看>>
sublime text2 中Emmet常用的技巧 和快捷键
查看>>
[PWA] Caching with Progressive libraries
查看>>
Intellij IDEA Run Dashboard面板
查看>>
_event_team
查看>>
SetProcessAffinityMask的问题
查看>>
NSArray排序方法讲解
查看>>
JavaScript中的 NaN 与 isNaN
查看>>
IP,子网掩码,交换机,路由
查看>>
3. 股票投资方法
查看>>
linux详解sudoers
查看>>
java MAT 分析
查看>>
poj2828
查看>>
vs2015 Android SDK
查看>>
虚拟分区安装
查看>>
GeSHi Documentation
查看>>