sql >> Databáze >  >> RDS >> Sqlserver

SQL Server:seskupení po sobě

V SQL Server to můžete provést pomocí agregace a rozdílu čísel řádků:

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

Myslím, že nejlepší způsob, jak pochopit, jak to funguje, je zírat na výsledky dílčího dotazu. Uvidíte, jak rozdíl mezi těmito dvěma hodnotami definuje skupiny sousedních hodnot.




  1. Jak se zbavit chyby MySQL „Připravený příkaz je třeba znovu připravit“

  2. Jak vybrat sloupec ORDER BY a RAND() oba?

  3. Implementace fulltextového vyhledávání v SQL Server 2016 pro začátečníky

  4. Python-analýza SQL pomocí pyparsingu