sql >> データベース >  >> RDS >> Oracle

Oracle DB で日付範囲が再帰的に重複するレコードを検索する方法

    グループ ID をレコードに割り当てることができます。アイデアは、重複しないレコードを見つけて、それらをグループの始まりとして使用することです.

    以下は、各レコードにグループを割り当てます:

      select t.*, sum(group_start) over (order by dstart) as grp
      from (select t.*,
                   (case when not exists (select 1
                                          from t t2
                                          where t2.dstart < t.dstart and t2.dend >= t.dstart
                                         )
                         then 1 else 0
                    end) group_start
            from t
           ) t
      

    特定のレコードのグループのみが必要な場合は、次のようないくつかの方法があります:

    with overlaps as (
          <query above>
         )
    select o.*
    from overlaps o
    where o.grp = (select o2.grp from overlaps o2 where o2.id = ???);
      


    1. PHP / mysql-変数をクラスから個別のindex.phpに渡す方法は?プロフィールページ?

    2. SpringBootアプリケーションの起動が非常に遅い

    3. Dockerpostgresの無効なプライマリチェックポイントレコード

    4. 特定のJDKバージョンのサンプルとデモの検索