sql >> Database >  >> RDS >> Sqlserver

Aangrenzende rijen samenvoegen in SQL?

Dit artikel biedt een flink aantal mogelijke oplossingen voor uw vraag

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

Deze lijkt me het meest rechttoe rechtaan:

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. Is er een manier om de meeste tabellen in een MySQL-schema af te kappen?

  2. Error:Fill:SelectCommand.Connection eigenschap is niet geïnitialiseerd.

  3. MySQL - Als het begint met een cijfer of een speciaal teken

  4. OPENROWSET BULK-machtigingen voor gedeelde map