1

私のデータベースは、IDで識別される多数の個人の月に約1回のエントリで構成されています。日付は、YEARおよびWEEKというタイトルのフィールドに格納されます。BINARY_FLAGというバイナリフラグがあります。バイナリフラグがオンになっている特定の年の各個人の先週を取得したいと思います。

初期データをプルするための私のコードは次のとおりです。

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

これにより、バイナリフラグが1である2000年のすべてのエントリが返されます。ただし、バイナリフラグが何週間も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 に答える