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

přejít na další řádek, když sloupec obsahuje určitou hodnotu (sql server 2008)

Existuje poměrně účinný způsob, jak určit, zda jsou data správná - tedy téměř. Zjistí, zda v datech chybí „1“ nebo „2“. Tato verze neurčuje, zda je první id „1“, protože to vaše otázka nezmiňuje.

Nejlepším řešením je použít lag() a lead() . SQL Server 2008 však tyto funkce nepodporuje. Takže pojďme k tomu přistupovat jako k mezerám a ostrovům. Existují nějaké situace s více než 1 „1“ nebo „2“ v řadě pro dané id ? Následující kód by měl najít tyto anomálie:

select id, inoutid, count(*) as num_in_row,
from (select t.*,
             row_umber() over (partition by id, inoutid order by date, hours, minute) as seqnum_ii,
             row_umber() over (partition by id order by date, hours, minute) as seqnum_i
      from t
     ) t
group by id, inoutid, (seqnum_i - seqnum_ii)
having count(*) > 1



  1. Alternativa k Intersect v MySQL

  2. MySql.Data v GAC, stále SecurityException

  3. Integrace PostgreSQL s autentizačními systémy

  4. Jak rozdělit řetězec na SQL Server