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

SQLを使用して連続する日付範囲を検出する

    結合や再帰的なCTEは必要ありません。標準のギャップアンドアイランドソリューションは、(値からrow_numberを引いた値)でグループ化することです。これは、連続するシーケンス内で不変であるためです。開始日と終了日は、グループのMIN()とMAX()だけです。

    WITH t AS (
      SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i
      FROM @d
      GROUP BY InfoDate
    )
    SELECT MIN(d),MAX(d)
    FROM t
    GROUP BY DATEDIFF(day,i,d)
    


    1. 先週のデータを選択するMySQLクエリ?

    2. データベース暗号化:3つのタイプとそれらが必要な理由

    3. メディアファイルをデータベースに保存するための最良の方法は何ですか?

    4. SQLステートメントで許可されていないローカルコレクションタイプ