私は2つのテーブルTABLE1(レコードのリスト)& TABLE2(マイナンバーをチェックする範囲)範囲タイプを考慮したオーバーラップ番号範囲の特定方法
TABLE2考慮型IDで重複範囲/行(複数可)を識別するための方法がありますか?
目的更に
RECORDS TABLE +-----------------+-----------------+-------------------+ + typeId + tbl1_NumberFrom + tbl1_NumberTo + +-----------------+-----------------+-------------------+ + 1 + 1 + 5 + + 1 + 8 + 10 + + 1 + 15 + 20 + + 2 + 4 + 7 + + 2 + 9 + 10 + + 2 + 11 + 20 + +-----------------+-----------------+-------------------+ MY RANGES TABLE TO CHECK +-----------------+-----------------+-------------------+ + typeId + My_NumberFrom + My_NumberTo + +-----------------+-----------------+-------------------+ + 1 + 1 + 3 + + 1 + 6 + 8 + + 1 + 11 + 12 + + 2 + 1 + 3 + + 2 + 6 + 8 + + 2 + 10 + 10 + +-----------------+-----------------+-------------------+ REQUIRED RESULT AS FOLLOW: +-----------------+-----------------+-------------------+-------------------+ + typeId + My_NumberFrom + My_NumberTo + IsOverlapping + +-----------------+-----------------+-------------------+-------------------+ + 1 + 1 + 3 + YES + + 2 + 1 + 3 + NO + + 1 + 6 + 8 + YES + + 2 + 6 + 8 + YES + + 1 + 11 + 12 + NO + + 2 + 10 + 10 + YES + +-----------------+-----------------+-------------------+-------------------+
、上記表親切
IF OBJECT_ID('tempdb.dbo.#dbtable', 'U') IS NOT NULL DROP TABLE #dbtable;
SELECT * INTO #dbtable FROM
(SELECT 1 typeId, 1 AS tbl1_NumberFrom, 5 AS tbl1_NumberTo
UNION ALL
SELECT 1 typeId, 8 AS tbl1_NumberFrom, 10 AS tbl1_NumberTo
UNION ALL
SELECT 1 typeId, 15 AS tbl1_NumberFrom, 20 AS tbl1_NumberTo
UNION ALL
SELECT 2 typeId, 4 AS tbl1_NumberFrom, 7 AS tbl1_NumberTo
UNION ALL
SELECT 2 typeId, 9 AS tbl1_NumberFrom, 10 AS tbl1_NumberTo
UNION ALL
SELECT 2 typeId, 11 AS tbl1_NumberFrom, 20 AS tbl1_NumberTo)
AS dbTable
IF OBJECT_ID('tempdb.dbo.#MyRanges', 'U') IS NOT NULL DROP TABLE #MyRanges;
SELECT * INTO #MyRanges FROM
(SELECT 1 typeId, 1 AS myr_NumberFrom, 3 AS myr_NumberTo
UNION ALL
SELECT 1 typeId, 6 AS myr_NumberFrom, 8 AS myr_NumberTo
UNION ALL
SELECT 1 typeId, 11 AS myr_NumberFrom, 12 AS myr_NumberTo
UNION ALL
SELECT 2 typeId, 1 AS My_NumberFrom, 3 AS myr_NumberTo
UNION ALL
SELECT 2 typeId, 6 AS myr_NumberFrom, 8 AS myr_NumberTo
UNION ALL
SELECT 2 typeId, 10 AS myr_NumberFrom, 10 AS myr_NumberTo)
AS MyList
SELECT * FROM #dbtable t
SELECT * FROM #MyRanges m
示唆ため
SQL、
多くのありがとうございます!他方は第一の端部の前に開始しながら、二つの範囲が重なっているかどうかを確認する
最後の行(2-10-10)をYESにしないでください。それは2-9-10と重なっている。 –
@ネマヤ・ペロビッチオハイオ州はいはいです。 – Haseeb