Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL заявка за групиране на елементи по време, но само ако са близо един до друг?

Това се нарича „проблемът с островите“ и аз го виждам като решение (кредит на Ицик Бен Ган)

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. Единичен ред GO(Batch) израз дава грешка в SQL Server?

  2. Ограничение, което позволява само една от двете таблици да препраща към основна таблица

  3. Как да извикам съхранена процедура от друга съхранена процедура?

  4. Присъединяване към MAX запис за дата в групата

  5. Актуализиране на редове в местоназначението на SSIS OLEDB