IDごとに「イベント」のリストを持つテーブルを使用しています。イベントは、そのIDで表されるオブジェクトが「オン」または「オフ」になったかどうかです。アイテムがこの表にない場合、アイテムはオフとして開始されると想定されます。その時点でオンになっていない場合にのみ、アイテムは合法的にオンにすることができます。
以下に例を示します。
Events
ID Type Date
1 On 01-MAY-12
1 Off 01-JUN-12
1 On 05-JUN-12
残念ながら、このデータはひどいものであり、不可能に満ちています。この表の実際の部分は次のとおりです。
Events
ID Type Date
1 On 01-MAY-12
1 On 01-MAY-12
1 On 01-JUN-12
1 Off 01-JUL-12
1 Off 01-AUG-12
1 On 05-AUG-12
私がやりたいのは、ジャンク データなしでこのテーブルを返すクエリを作成することです。ここでは、不可能な行 (つまり、アイテムが既にオンになっているときにオンになる行、またはアイテムが既にオフになっているときにオフになる行) が削除されます。
初めてオンにする前に「オフ」になっている場合はあまり気にしません。そのようなケースはないと思います。
したがって、上記のクエリは次を返します。
Events
ID Type Date
1 On 01-MAY-12
1 Off 01-JUL-12
1 On 01-AUG-12
これを行う方法について何か考えはありますか?この「条件Xの下で最初の行を返す」というロジックは、私に多くの困難を引き起こしています。最初の列または最初の列から離れたピリオドが必要な場合は、グループ化して分を取得できます。しかし、この場合はどうすればよいでしょうか?