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

Обединяване на данни в една SQL таблица без курсор

Ключовото наблюдение е, че поредица от числа минус друга поредица е константа. Можем да генерираме друга последователност, използвайки row_number . Това идентифицира всички групи:

select id, MIN(number) as low, MAX(number) as high
from (select t.*,
             (number - ROW_NUMBER() over (partition by id order by number) ) as groupnum
      from t
     ) t
group by id, groupnum

Останалото е просто агрегиране.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. String_agg за SQL Server преди 2017 г

  2. Брой дни от седмицата в диапазон от дати в TSQL

  3. SQL Server Log Shipping &Disaster Recovery Installation and Configuration -2

  4. SQL Server Висока наличност:Добавете нов диск към съществуващ екземпляр на клъстер за отказване

  5. Защо тази заявка е бавна първия път след като стартирам услугата?