sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server:gruppera efter konsekutiv

I SQL Server kan du göra detta med aggregering och skillnad på radnummer:

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);

Jag tror att det bästa sättet att förstå hur detta fungerar är genom att stirra på resultatet av underfrågan. Du kommer att se hur skillnaden mellan de två värdena definierar grupperna av angränsande värden.




  1. Infoga CLOB i Oracle-databasen

  2. Referens Lagrade procedurer för alla databaser i servern

  3. Är join insert/update på MySQL en atomär operation?

  4. Är matematiska funktioner i MySQL snabbare än PHP?