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

SQLで隣接する行をマージしますか?

    この記事では、あなたの質問に対して考えられる解決策をいくつか提供します

    http://www.sqlmag.com/blog/puzzled-by-t-sql-blog-15/tsql/solutions-to-packing-date-and-time-intervals-puzzle-136851

    これは最も単純なように思えます:

    WITH StartTimes AS
    (
      SELECT DISTINCT username, starttime
      FROM dbo.Sessions AS S1
      WHERE NOT EXISTS
        (SELECT * FROM dbo.Sessions AS S2
         WHERE S2.username = S1.username
           AND S2.starttime < S1.starttime
           AND S2.endtime >= S1.starttime)
    ),
    EndTimes AS
    (
      SELECT DISTINCT username, endtime
      FROM dbo.Sessions AS S1
      WHERE NOT EXISTS
        (SELECT * FROM dbo.Sessions AS S2
         WHERE S2.username = S1.username
           AND S2.endtime > S1.endtime
           AND S2.starttime <= S1.endtime)
    )
    SELECT username, starttime,
      (SELECT MIN(endtime) FROM EndTimes AS E
       WHERE E.username = S.username
         AND endtime >= starttime) AS endtime
    FROM StartTimes AS S;
    


    1. テーブルの FK リレーションに基づいて、PL/SQL で DELETE ステートメントを生成する方法は?

    2. 文字列からSQLへのINパラメータのPythonリスト

    3. AndroidSQLiteの問題-テーブル...に名前の付いた列がありません

    4. MySQLコネクタのソースコードを変更してPCにインストールするにはどうすればよいですか?