2012-12-05 67 views
1

我的数据库包含大约一个人每月一次的条目,由ID标识。日期存储在标题为YEAR和WEEK的字段中。我有一个二进制标志,称为BINARY_FLAG。我想在特定年份的每个人中获取上个星期的二进制标志。删除每个人的除最后一项以外的所有内容

我的代码拉初始数据如下:

select ID, year, week, binary_flag 
from my_table 
where year = 2000 and 
binary_flag = 1 

这将返回所有条目2000年出现的二进制标志为1,但是,会有许多的个人的多个条目,如果二进制标志为1个星期。除了最后一周,我如何移除所有内容?

回答

1
select * from my_table t1 
join 
(select ID, year, max(week) maxWeek 
from my_table 
where year = 2000 and 
binary_flag = 1 
group by Id,year) t2 
on 
(t1.Id=t2.id) and (t1.year=t2.year) and (t1.week=t2.maxWeek) 
相关问题