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

重複する日付間隔をマージする

    私は同じ解決策を探していましたが、重複する日時を組み合わせて単一の重複する範囲レコードを返すというこの投稿に出くわしました。

    パッキングの日付間隔に関する別のスレッドがあります。

    ここにリストされているものを含め、さまざまな日付範囲でこれをテストしましたが、毎回正しく機能します。

    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
    


    1. SQL Server 2005で大文字と小文字を区別するように変更するにはどうすればよいですか?

    2. Postgisのインストール:タイプジオメトリは存在しません

    3. MariaDBでのPERIOD_ADD()のしくみ

    4. 1114(HY000):テーブルがいっぱいです