重複する日付間隔を結合する
問題:
重複する日付間隔を結合するプロセスは実行できますか?なれ改善されましたか?
ディスカッション:
元の投稿で示された解決策は簡単ですが、より効率的な方法が利用できる可能性があります。
解決策:
代替ソリューションの 1 つは、「重複する日時を結合して単一の値を返す」という投稿からインスピレーションを得ています。重複する範囲レコードです。"
このソリューションは、サブクエリを利用して各間隔内の最大終了日を特定し、自己結合操作を実行して重複する間隔を結合します:
SELECT s1.StartDate, --t1.EndDate MIN(t1.EndDate) AS EndDate FROM @T s1 INNER JOIN @T t1 ON s1.StartDate <= t1.EndDate AND NOT EXISTS(SELECT * FROM @T t2 WHERE t1.EndDate >= t2.StartDate AND t1.EndDate < t2.EndDate) WHERE NOT EXISTS(SELECT * FROM @T s2 WHERE s1.StartDate > s2.StartDate AND s1.StartDate <= s2.EndDate) GROUP BY s1.StartDate ORDER BY s1.StartDate
結果:
このソリューションを使用すると、次の結果が得られます:
StartDate | EndDate |
---|---|
2010-01-01 | 2010-06-13 |
2010-06-15 | 2010-06-25 |
2010-06-26 | 2010-08-16 |
2010-11-01 | 2010-12-31 |
以上が重複する日付間隔の結合を最適化して効率を高めることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。