Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie SQL do grupowania elementów według czasu, ale tylko w pobliżu siebie?

Nazywa się to „problemem wysp” i widziałem to jako rozwiązanie (kredyt Itzik Ben Gan)

select  tool_number,
        min(time) 'in',
        max(time) 'out',
        count(*)
from    (
    select  tool_number,
            time,
            ROW_NUMBER() OVER (ORDER BY time) - ROW_NUMBER() OVER (PARTITION BY Tool_Number ORDER BY time) AS Grp
    from    #temp
    ) as a
group by grp, tool_number
order by min(time)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:jak zapytać, kiedy wykonano ostatnią kopię zapasową dziennika transakcji?

  2. Jak usunąć zduplikowane wiersze w SQL Server?

  3. Unikanie zakleszczenia za pomocą podpowiedzi NOLOCK

  4. Jak wyeksportować dane w formacie CSV z SQL Server za pomocą sqlcmd?

  5. Uporządkuj malejąco według daty - miesiąc, dzień i rok