sql >> Databáze >  >> RDS >> Sqlserver

Zjistěte po sobě jdoucí rozsahy dat pomocí SQL

Nejsou potřeba žádná spojení ani rekurzivní CTE. Standardním řešením mezer a ostrovů je seskupení podle (hodnota mínus číslo_řádku), protože to je v rámci po sobě jdoucí sekvence invariantní. Počáteční a koncová data jsou pouze MIN() a MAX() skupiny.

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. Způsoby, jak opravit chybu I/O na základě logické konzistence serveru SQL Server

  2. Agregační pole Postgresql

  3. Před přístupem k datům z kurzoru se ujistěte, že je správně inicializován

  4. Oracle PL/SQL – kolekce (vnořené tabulky)