常用SQL整理 - 查找存在交集的數據

DECLARE @tbl TABLE
    (
      ID INT ,
      FROM_VALUE INT ,
      TO_VALUE INT
    )

INSERT  @tbl
        ( ID, FROM_VALUE, TO_VALUE )
VALUES  ( 1, 10, -- A - int
          30  -- B - int
          )

INSERT  @tbl
        ( ID, FROM_VALUE, TO_VALUE )
VALUES  ( 2, 20, -- A - int
          40  -- B - int
          )

INSERT  @tbl
        ( ID, FROM_VALUE, TO_VALUE )
VALUES  ( 3, 41, -- A - int
          60  -- B - int
          )




SELECT
            DISTINCT
        R.*
FROM    @tbl R
        INNER JOIN @tbl I ON ( ( R.FROM_VALUE <= I.TO_VALUE
                                 AND I.FROM_VALUE <= R.TO_VALUE
                               )
                               AND NOT ( R.FROM_VALUE = I.FROM_VALUE
                                         AND I.TO_VALUE = R.TO_VALUE
                                       )
                             )
ORDER BY ID

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章