0

これで私を助けてくれることを願っています。タイトルが少しわかりにくいので、はっきりさせておきます。、、および"ORDERS"行の列があるとしましょう"ORDER ID""ORDER #""CODE""DATE"

注文が同じ注文で多数のコードを持つことができるとしましょう (したがって、このテーブルは別のテーブルに結合されますが、現時点では関係ありません) および特定の時点で。

同じ "CODE" を持つ行の ORDER # を取得したい場合、この最初の "CODE" の間に、100 時間後に別の "CODE" があってはなりません。でも、100時間後に来るかもしれない一番最初の「CODE」も欲しい。

私は正確な答えを探しているわけではありません。これを行う方法があるかどうかを主に調べています。テーブルの複数のインスタンスで実行できますか? そして、ロジックをどのように実装できますか?

ありがとうございました!

4

1 に答える 1

0

lag()あなたが望むのは機能だと思います:

select t.*
from (select t.*,
             lag(date) over (partition by order#, code order by date) as prevdate
      from t
     ) t
where date - prevdate >= 100/24.0 or prevdate is null;

order#これは、code組み合わせの前の日付を取得します。order#次に、同じとを持つ前の行から 100 時間以上経過している行を選択しますcode

于 2013-06-03T20:03:14.067 に答える