コースに出席を追跡するテーブルがあります。列はcourseid、レッスン、personid、および日付です。私は人が関連するコース、レッスン、および人物とともに出現する最も早い日付を抽出するクエリ(下記)を持っています。これは、特定のコースを開始したときを決定し、最初のレッスンで開始したことを確認するために使用されます。これはうまく動作しますが、私が立ち往生しているところでは、コースごとにこのクエリを実行しています。例えば、特定のコースの各人がすべてのコースではなく、それを開始した最初の日付を見つけます。今はもっと一般的なクエリを実行し、それをbizレイヤーでフィルタリングしています。グループの最小値の行を選択する方法とwhere句を使用する方法
私はので、任意のタイプミスを許し、この少しの難読化:PERSON_ID、内側のクエリでにわたって
select a.courseid,
a.lesson,
a.personid,
a.thedate
from (select personid,
min(thedate) as earliestdate
from attendance
group by personid) as x
inner join attendance as a on (a.personid = x.personid and a.thedate = x.thedate)