注文のステータス変更を保持するテーブルがあります。
ORDER_ID | CHANGE_DATE | CODE_1 | CODE_2 | CODE_3
=============================================================
1 | 2012-09-01 12:20 | Z1 | NULL | NULL
1 | 2012-09-01 12:21 | Z2 | S01 | NULL
1 | 2012-09-01 12:22 | Z2 | S04 | NULL
2 | 2012-09-01 12:22 | Z1 | S01 | NULL
3 | 2012-09-01 12:23 | Z1 | S03 | NULL
1 | 2012-09-01 12:24 | Z1 | S02 | NULL
2 | 2012-09-01 12:29 | Z1 | S05 | NULL
1 | 2012-09-01 13:29 | Z5 | T01 | X01
2 | 2012-09-01 13:31 | Z1 | T01 | NULL
履歴に CODE_2 IN (S01,S02,S03) があるが、その後に S04 と S05 がないすべての注文に対して ORDER_ID を選択する必要があります。
この特定のケースでは、クエリは注文 1 を返す必要があります。これは、CODE_2 の後に S04 と S05 がないためです。注文 1 の履歴には S04 があり、その後にコード S02 があったことに注意してください。コード S03 のため、注文 3 も返す必要があります。オーダー 2 は、履歴の最後のコードが S05 (S グループの最後のコード) であるため、返されるべきではありません。
他のテーブルに参加せずにこれを行うことはできますか? このテーブルから ORDER_ID のみを選択したいと思います。