赞
踩
来了来了,想到一个可能比较麻烦的方法,如果后面想到更简便的再更新,步骤如下:
一、找出原始表符合条件的记录
找出同一SUBJECT_ID、ITEM_ID下,B_TIME距离A_TIME最近的记录(并且A_TIME大于B__TIME),可以分为两步;
第一先找出符合条件的b_time,也就是在满足A_TIME大于B__TIME条件下找出最大的b_time,代码结果如下:
select subject_id,item_id,max(b_time) maxtime #求得最大的b_time,给别名maxtimefrom 原始表 where a_time>b_time #筛选a_time>b_time的记录group by subject_id,item_id; #用subject_id和item_id做分组
第二步是将上一步查询的表和原始表做内连接,连接条件是subject_id、item_id、maxtime相等,这样就找出符合留存需求的记录了,代码和结果如下:
select 原始表.* from 原始表
join (select subject_id,item_id,max(b_time) maxtime
from 原始表 where a_time>b_time
group by subject_id,item_id) as a
on 原始表.subject_id=a.subject_id and 原始表.item_id=a.item_id and 原始表.b_time=a.maxtime;
二、和D_ITEMD表进行比对
和D_ITEMD表中的ITEMID进行比对,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。