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,许多个人将有多个条目。我如何删除除上周以外的所有内容?

4

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)
于 2012-12-05T19:54:14.313 回答