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

SQL Server:групиране по последователност

В SQL Server можете да направите това с агрегиране и разлика в номерата на редове:

select HevEvenementID, HteTypeEvenID,
       max(HjvNumeSequJour)
from (select t.*,
             row_number() over (partition by HevEvenementID order by HjvNumeSequJour) as seqnum_1,
             row_number() over (partition by HevEvenementID, HteTypeEvenID order by HjvNumeSequJour) as seqnum_2
      from yourtable t
     ) t
group by HevEvenementID, HteTypeEvenID, (seqnum_1 - seqnum_2)
order by max(HjvNumeSequJour);

Мисля, че най-добрият начин да разберете как работи това е като се взирате в резултатите от подзаявката. Ще видите как разликата между двете стойности определя групите от съседни стойности.




  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 сървър Неуспешно влизане. Входът е от ненадежден домейн и не може да се използва с Windows удостоверяване

  2. SQL за връщане на списък с години след определена година

  3. Как да изпращате имейли от SQL Server (T-SQL)

  4. SQL - Извикване на съхранена процедура за всеки запис

  5. Методи за пейджинг на SQL Server 2008?