start
時間で記述されたタイムスパンを持つ大きなデータベース テーブルがありますstop
。簡単なタイムスパンが優先され、タイムスパンが重複する可能性があります。
重複がなくなるように処理する必要があります。
オーバーラップの場合、優先度の高いスパンが優先され、優先度の低いタイムスパンがトリミングされて、2 つがオーバーラップしなくなります。タイム スパンが優先度の高い 1 つ以上のタイム スパンと完全に重複している場合は、削除する必要があります。
簡単なテーブルの例:
SELECT
1 AS id,
{ts '2012-09-24 10:00:00'} AS start,
{ts '2012-09-24 11:00:00'} AS stop,
10 AS priority
INTO #TABLE
UNION ALL SELECT 2, {ts '2012-09-24 10:15:00'}, {ts '2012-09-24 12:00:00'}, 5
UNION ALL SELECT 3, {ts '2012-09-24 10:30:00'}, {ts '2012-09-24 12:30:00'}, 1
UNION ALL SELECT 4, {ts '2012-09-24 11:30:00'}, {ts '2012-09-24 13:00:00'}, 15
SELECT * FROM #TABLE;
DROP TABLE #TABLE;
結果は次のようになります。
Start Stop Priority
2012-09-24 10:00 2012-09-24 11:00 10
2012-09-24 11:00 2012-09-24 11:30 5
2012-09-24 11:30 2012-09-24 13:00 15
可能ですが、簡単な解決策が見つかりません。できれば、カーソルの使用を避けたいと思います。しかし、他に方法がない場合は、まあ、カーソルです。