这个SQL语句效率低下,求指导
是这样的。数据库是DB2的数据库,有一个表,称为资产流水变化吧,里面存放的字段有
变化流水号(主键) 资产id 原来的使用部门 现使用部门 原状态 现状态
change_id asset_id old_use_dept new_use_dept old_status new_status
变换时间
change_date
主要就是这个几个字段,现在要在进行数据帅选。条件为:
1 原来使用部门不等于现在使用部门,如果中间出现多次变动,但是第一次变动和最后一次变动的部门不相同的,并且把最新的一跳记录的old_use_dept字段的值替换成该资产第一次出现的时候的值,如果第一次变动和最后一次变动额部门相同的话不需要显示
2 如果一个资产id出现多次,只显示最后一次出现的记录,其他的不管
3 如果一个资产id出现多次,只显示最后一次出现的记录,其中,显示的该记录的old_status的字段的值是该资产ID第一次出现的原状态。
说的不是很清楚,模拟几个数据,给大家看看吧,change_date写不下了。以c代替吧
change_id asset_id old_use_dept new_use_dept old_status new_status change_date
1 123 90 91 2 2 2012-12-14
2 123 89 92 1 2 2012-11-14
3 1234 90 91 2 1 2012-10-14
4 1234 91 90 3 2 2012-10-12
如上记录,我要的结果是
change_id asset_id old_use_dept new_use_dept old_status new_status change_date
1 123 89 91 1 2 2012-12-14
3-4记录不需要显示,因为3-4记录的部门变动记录是从91变动到90再从90变动到91,相当于没有变动。不需要显示
[解决办法]